递归-练习递归求阶乘、递归归打印多个目录、综合练习文件搜索

练习递归求阶乘

阶乘:所有小于及等于该数的正整数的积

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);
}
}
}
}

运行结果:

posted @ 2022-10-17 10:39  想见玺1面  阅读(22)  评论(0编辑  收藏  举报