练习_使用递归计算阶乘和练习_递归打印多级目录和文件搜索

递归计算阶乘

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

代码:

public class study01 {
    public static void main(String[] args) {
        //调用递归方法计算阶乘
        int factorial = new study01().factorial(10);
        //输出结果
        System.out.println("结果"+factorial);
    }
    /**
     * 定义方法使用递归计算阶乘
     * 5的阶乘:5!=5*(5-1)*(5-2)*(5-3)*(5-4)=5*4*3*2*1
     * 递归结束的条件
     * 获取到1的时候结束
     * 递归的目的
     * 获取下一个被乘的数字(n-1)
     */
    public int factorial(int i){
        if (i == 1) {
            return 1;
        }
        return i*=factorial(i-1);
    }
}

递归打印多级目录

分析:多级目录的打印,就是当目录的嵌套。遍历之前,无从知道到底有多少集目录,所以我们还是要使用递归实现
代码实现:

package com.yang.Test.FileStudy;


import java.io.File;

public class study01 {
    public static void main(String[] args) {
        new study01().getAllFile(new File("D:\\音乐"));
    }


    /**
     * 定义一个方法,参数传递File类型的目录
     * 方法中对目录进行遍历
     * @param dir
     */
    public void getAllFile(File dir){
        File[] files = dir.listFiles();
        for (File file : files) {
            //对遍历得到的File对象file进行判断,判断是否是文件夹
            if (file.isDirectory()) {
                //file是一个文件夹,则继续遍历这个文件夹
                //直接调用getAllFile方法即可;递归(自己调用自己)
                getAllFile(file);
            } else {
                System.out.println(file);
            }
        }
    }
}

文件搜索

练习_获取当前项目以.java的所有文件

package com.yang.Test.FileStudy;


import java.io.File;

public class study01 {
    public static void main(String[] args) {
//
        new study01().getAllFile(new File("F:\\java\\java代码\\exercises"));
    }


    public void getAllFile(File dir){
        File[] files = dir.listFiles();
        for (File file : files) {
            if (file.isDirectory()) {
                getAllFile(file);
            } else {
                String s = file.toString();
                boolean endsWith = s.endsWith(".java");
                if (endsWith){
                    System.out.println(file);
                }
            }
        }
    }
}
posted @ 2022-07-13 13:28  我滴妈老弟  阅读(27)  评论(0编辑  收藏  举报