Java遞歸:一個NB自慰的操作
阿新 • • 發佈:2018-06-04
文件 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自慰的操作