其他分享
首页 > 其他分享> > 递归练习

递归练习

作者:互联网

练习—使用递归计算阶乘

    /**
     * 使用递归计算阶乖
     * n的阶乘:n!=n*(n-1)*...*3*2*1
     * 5的阶乘:5!=5*(5-1)*(5-2)*(5-3)*(5-4)=5*4*3*2*1
     * 递归的结束条件:
     *      获取到1的时候结束
     * 递归的目的
     *      获取下一个被乘的数(n-1)
     */
    public static int jc(int i){
        //获取到1的时候结束
        if (i==1){
            return 1;
        }
        return i*jc(i-1);
    }
    public static void main(String[] args){
        int sum = jc(5);
        System.out.println(sum);
    }

运行结果:

 

 

 

 

 

练习—递归打印多级目录

    public static void main(String[] args){
        File file = new File("G:\\cccc");
        getAllFile(file);
    }
    public static void getAllFile(File dir){
        File[] files = dir.listFiles();
        for (File f : files) {
            System.out.println(f);
        }
    }

运行结果:

 

 分析:

  发现遍历的结果并不完全,只有cccc文件夹中的内容,没有子文件夹内容

解决:

   对遍历得到的File对象f进行判眠判断是杏是文件夹

if(f.isDirectory()){
    //f是一个文件夹,则继绩遍历这个文件夹
    //我们发现getAIlFile方法就是传递文件夹,遍历文件夹的方法
    //所以直接调用getAlIFile方法即可:递归(白己调用自己
    getAllFile(f);
}else{
    //f是一个文件,直接打印即可
    System.out.println(f);
}
    public static void getAllFile(File dir){
        File[] files = dir.listFiles();
        for (File f : files) {
            if(f.isDirectory()){
                //f是一个文件夹,则继绩遍历这个文件夹
                //我们发现getAIlFile方法就是传递文件夹,遍历文件夹的方法
                //所以直接调用getAlIFile方法即可:递归(白己调用自己
                getAllFile(f);
            }else{
                //f是一个文件,直接打印即可
                System.out.println(f);
            }
        }
    }

运行结果:

 

 

 

 

 

 

综合案例—文件搜索

    public static void getAllFile(File dir){
        File[] files = dir.listFiles();
        for (File f : files) {
            if(f.isDirectory()){
                //f是一个文件夹,则继绩遍历这个文件夹
                //我们发现getAIlFile方法就是传递文件夹,遍历文件夹的方法
                //所以直接调用getAlIFile方法即可:递归(白己调用自己
                getAllFile(f);
            }else{
                //f是一个文件,直接打印即可
                /**
                 * 只要.java文件
                 * 1、把File对象f。转为字符串对象
                 */
                String s = f.toString();
                //字符串转换为小写
                s =s.toLowerCase();
                //2、调用String类中方法endsWith判断字符串是否是以.java结尾
                boolean b = s.endsWith(".java");
                if (b){
                    System.out.println(f);
                }
            }
        }
    }
    public static void main(String[] args){
        File file = new File("G:\\bbbb");
        getAllFile(file);
    }

运行结果:

 

标签:遍历,递归,练习,文件夹,static,File,getAllFile,public
来源: https://www.cnblogs.com/xjw12345/p/16469045.html