递归

mac2022-06-30  78

概述:

1.递归 2.递归求和 3.递归求阶乘 4.文件搜索

1.递归

什么是递归?

方法自己调用自己

递归注意事项:

1.要有出口,能够结束递归 2.递归的次数不能太多

public static void main(String[] args) { System.out.println("main"); main(args); }

2.递归求和

计算1 ~ 5的和

public static void main(String[] args) { //计算1~num的和,使用递归完成 int num = 5; // 调用求和的方法 int sum = getSum(num); // 输出结果 System.out.println(sum); } public static int getSum(int num) { /* num为1时,方法返回1, 相当于是方法的出口,num总有是1的情况 */ if (num == 1) { return 1; } /* num不为1时,方法返回 num +(num-1)的累和 递归调用getSum方法 */ return num + getSum(num - 1); }

3.递归求阶乘

讲解:

找规律: n的阶乘 = n 乘以 (n-1)的阶乘找出口: 当n==1时,返回1 public static void main(String[] args) { // long jc = jc(30); // System.out.println("jc = " + jc); BigDecimal jc2 = jc2(300); System.out.println("jc2 = " + jc2); } // 找规律: n的阶乘 = n 乘以 (n-1)的阶乘 // 找出口: 当n==1时,返回1 public static long jc(int n) { // 找出口: 当n==1时,返回1 if (n == 1) { return 1; } // 找规律: n的阶乘 = n 乘以 (n-1)的阶乘 return n * jc(n - 1); } public static BigDecimal jc2(int n) { // 找出口: 当n==1时,返回1 if (n == 1) { return new BigDecimal("1"); } // 找规律: n的阶乘 = n 乘以 (n-1)的阶乘 // new BigDecimal(n).add(): 求和 // new BigDecimal(n).subtract(): 减 // new BigDecimal(n).divide(): 除 // new BigDecimal(n).multiply() 乘法 return new BigDecimal(n).multiply(jc2(n - 1)); }

4.文件搜索

搜索 D:\aaa 目录中的 .java 文件。

//1. 目录搜索,无法判断多少级目录,所以使用递归,遍历所有目录。 //2. 遍历目录时,获取的子文件,通过文件名称,判断是否符合条件。 public static void main(String[] args) { // 创建File对象 File dir = new File("D:\\aaa"); // 调用打印目录方法 printDir(dir); } public static void printDir(File dir) { // 获取子文件和目录 File[] files = dir.listFiles(); // 循环打印 for (File file : files) { if (file.isFile()) { // 是文件,判断文件名并输出文件绝对路径 if (file.getName().endsWith(".java")) { System.out.println("文件名:" + file.getAbsolutePath()); } } else { // 是目录,继续遍历,形成递归 printDir(file); } } } }
最新回复(0)