练习和综合案例文件搜索

使用递归计算阶乘

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 void main(String[] args) {
        int s = sum1(5);
        System.out.println(s);
    }

    private static int sum1(int i) {
        if (i==1){
            return 1;
        }
        return i*sum1(i-1);
    }

 

 

递归打印多级目录

 

 

 

 会发现遍历的结果并不完全,只有a文件夹的内容,没有11和q文件夹内容

解决:

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

  if(f.isDirectory){

    f是一个文件夹,则继续遍历这个文件夹

    我们发现getA方法就是传递文件夹,遍历文件夹的方法

    所以直接调用getA方法即可:递归(自己调用自己)

    getA(f);

  }else{

    f是一个文件,直接打印即可

    Systen.out.println(f)

  }

    public static void main(String[] args) {
        File file = new File("F:\\a");
        getA(file);
    }

    private static void getA(File file){
        System.out.println(file);
        File[] files = file.listFiles();
        for (File f : files){
            if (f.isDirectory()){
                getA(f);
            }else {
                System.out.println(f);
            }
        }
    }

综合案例文件搜索

只要.java的文件

    public static void main(String[] args) {
        File file = new File("F:\\a");
        getA(file);
    }

    private static void getA(File file){
        File[] files = file.listFiles();
        for (File f : files){
            if (f.isDirectory()){
                getA(f);
            }else {
                //只要.java结尾文件
                String p = f.getPath();
                //把字符串,转换为小写
                p = p.toLowerCase();
                //调用String类中的方法endswith判断字符串是否是以.java结尾
                boolean b = p.endsWith(".java");
                //如果是以.java结尾文件,则输出
                if (b){
                    System.out.println(f);
                }
            }
        }
    }

 

 

 

 

 

posted @ 2022-07-12 11:33  魔光领域  阅读(24)  评论(0编辑  收藏  举报