1. 程式人生 > >Java遞歸:一個NB自慰的操作

Java遞歸:一個NB自慰的操作

文件 ring direct 所有 指定 ace main 如果 file

遞歸的核心思想:自身調用自身

示例一:求5的階乘

常規方法:

使用while循環

 1 public class Demo01 {
 2 
 3      public static void main(String[] args) {
 4          int result = test(5);
 5          System.out.println("結果是"+result);
 6      }
 7      
 8      public static int test(int num) {
 9         int result=1;
10         while (num>0) {
11             result=result*num;
12             num--;
13         }
14         return result;
15     }
16 }

使用遞歸

 1 public class Demo01 {
 2 
 3      public static void main(String[] args) {
 4          int result = print(5);
 5          System.out.println("結果是"+result);
 6      }
 7      
 8      public static int print(int num) {
 9          if(num==1) {
10              return 1;
11          }else {
12              return num*print(num-1);
13          }
14      }
15 }

示例二:

列出一個文件夾的子孫文件與目錄

 1 public class Demo01 {
 2 
 3      public static void main(String[] args) {
 4          File dir=new File("F:\\aa");
 5          listFiles(dir,"|--");
 6      }
 7      
 8      public static void listFiles(File dir, String space) {
 9          File[] files = dir.listFiles();
10          for(File file : files) {
11              if(file.isFile()) {
12                  System.out.println(space+file.getName());
13              }else if(file.isDirectory()) {
14                  listFiles(file, "|  "+space);
15              }
16          }
17      }
18 }

示例三:

刪除一個非空的文件夾

 1 public class Demo01 {
 2 
 3      public static void main(String[] args) {
 4          File dir=new File("F:\\aa");//創建對象並指定
 5          deleteDir(dir);
 6      }
 7      
 8      public static void deleteDir(File dir) {
 9          File[] files = dir.listFiles();  //列出了所有的子文件
10          for(File file : files) {       //文件遍歷查詢
11              if(file.isFile()) {        //如果是文件,執行刪除操作
12                  file.delete();
13              }else if(file.isDirectory()) {     //如果是文件夾,則再調用自身方法
14                  deleteDir(file);  //括號中的file只是名字,之所以為什麽不是dir,只是將上面的名字又帶入了deleteDir方法中
15              }
16          }
17      }
18 }

Java遞歸:一個NB自慰的操作