递归
-
递归:指在当前方法内调用自己的这种现象。
public static void a(){
a();
}
-
注意事项:
-
-
就算有出口, 执行的次数也不能过多
package com.itheima._03recursive; /* 递归求阶乘 阶乘 n的阶乘 n! = n * (n-1) * (n-2) * ... 2 * 1 5! = 5 * 4 * 3 * 2 * 1 5 * 4! 4 * 3! 3 * 2! 2 * 1! 1 n! = n * (n-1)! */ public class Demo01 { public static void main(String[] args) { System.out.println(getNum(5)); } /* 此方法用于递归求阶乘 */ public static int getNum(int n) { // 出口 if (n == 1) { return 1; } // n的阶乘 : n * (n-1)! return n * getNum(n - 1); } private static void demo01() { int num = 1; // 5的阶乘 for (int i = 5; i > 0; i--) { num = num * i; } System.out.println(num); } }![]()
package com.itheima._03recursive; import java.io.File; /* 获取某一个文件夹中, 所有文件(包含每一层文件夹中的文件) */ public class Demo02 { public static void main(String[] args) { File file = new File("C:\\"); printFile(file); } /** * 此方法用于打印文件夹中的所有文件 * @param file */ public static void printFile(File file) { // 获取文件夹中所有的文件和文件夹 File[] subFiles = file.listFiles(); // 不得不躲开null出现的空指针异常 if (subFiles != null) { // 遍历数组, 获取每一个文件和文件夹 for (File subFile : subFiles) { // 判断 // 如果是文件 -> 打印 if (subFile.isFile()) { System.out.println(subFile); } else { // 如果是文件夹 -> 打印这个文件夹中的所有文件 -> 递归 // subFile 就是一个文件夹 printFile(subFile); } } } } }package com.itheima._03recursive; import java.io.File; public class Demo03 { public static void main(String[] args) { File file = new File("F:\\itheima"); deleteDirectory(file); } /** * 此方法用于删除文件夹 * * @param file */ public static void deleteDirectory(File file) { // 获取文件夹中所有的文件和文件夹 File[] subFiles = file.listFiles(); // 遍历数组, 获取每一个文件和文件夹 for (File subFile : subFiles) { // 判断 // 如果是文件 -> 打印 if (subFile.isFile()) { System.out.println(subFile.delete()); } else { // subFile 就是一个文件夹 deleteDirectory(subFile); } } // 循环外, 要删除file这个空文件夹 file.delete(); } }
-


浙公网安备 33010602011771号