递归-练习递归求阶乘、递归归打印多个目录、综合练习文件搜索
练习递归求阶乘
阶乘:所有小于及等于该数的正整数的积
n的阶乘:n!=n*(n-1) *..... *3 * 2 * 1
分析:这与类和类相似 只不过换成了乘法运算 学员可以自己练习 需要注意阶乘值符合int类型的范围
推理得出:n!=n*(n-1)!
代码:
public static void main(String[] args) {
        int method = method(5);
        System.out.println(method);
    }
    private static int method(int num) {
        if (num==1){
            return 1;
        }
        return num*method(num-1);
    }
运行结果:

递归打印多个目录

代码:
public static void main(String[] args) {
    File file = new File("E:\\file");
    method(file);
}
private static void method(File file) {
    File[] files = file.listFiles();
    for (File file1 : files) {
        //对遍历得到的File对象进行判断 判断是否是文件夹
        if (file1.isDirectory()){
            //递归(自己调自己)
            method(file1);
        }else{
            System.out.println(file1);
        }
    }
}
运行结果:

这里的输出结果有很多 但是我只要后缀是mp3的文件 进下来就是文件搜索
文件搜索

他这有很多后缀 比如txt、mp3、java 我们取出后缀为mp3的文件
分析:
1.目录搜索 无法判断多少级目录 所以使用递归 遍历所有目录
2.遍历目录时 获取的子文件 通过文件名称 判断是否符合条件
代码:
public static void main(String[] args) {
    File file = new File("E:\\file");
    method(file);
}
private static void method(File file) {
    File[] files = file.listFiles();
    for (File file1 : files) {
        //对遍历得到的File对象进行判断 判断是否是文件夹
        if (file1.isDirectory()) {
            //递归(自己调自己)
            method(file1);
        } else {
            //将文件遍历转为字符串 也是获取文件的名字
            String name = file1.getName();
            //使用String里的endsWith:查看结尾是否是mp3这个文件
            boolean b = name.endsWith(".mp3");
            if (b) {
                System.out.println(file1);
            }
        }
    }
}
运行结果:

 
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号