比较简单的地柜例子就是递归求阶乘,这里使用输出目录结构作为例子,下面其实就是若干个例子:
递归:函数直接或者间接的调用函数自身。
递归的使用前提:必须要有条件的情况下调用,否则就是一个死循环
需求:流出一个文件夹的子孙文件和目录.
需求:流出目录结构。第一级0个空格,第二级2个空格,类推
需求:列出目录的属性结构
需求4:删除一个非空的文件夹。
1 //删除一个非空的文件夹 2 public static void deleteDir(File dir) 3 { 4 File[] files = dir.listFiles(); //列出所有子文件 5 for (File file : files) 6 { 7 if(file.isFile()) 8 { 9 file.delete(); 10 } 11 else if(file.isDirectory()) 12 { 13 deleteDir(file); 14 } 15 } 16 dir.delete(); 17 } 18 19 20 //用空格表示出目录结构 21 public static void listFiles3(File dir, String space) //space 存储的是空格 22 { 23 File[] files = dir.listFiles(); //列出所有的子文件 24 for (File file : files) 25 { 26 if(file.isFile()) 27 System.out.println(space+file.getName()); 28 else if(file.isDirectory()) 29 { 30 System.out.println(space+file.getName()); 31 listFiles3(file, "| "+space); 32 } 33 } 34 } 35 36 37 //用空格表示出目录结构 38 public static void listFiles2(File dir, String space) //space 存储的是空格 39 { 40 File[] files = dir.listFiles(); //列出所有的子文件 41 for (File file : files) 42 { 43 if(file.isFile()) 44 System.out.println(space+file.getName()); 45 else if(file.isDirectory()) 46 { 47 System.out.println(space+file.getName()); 48 listFiles2(file, space+" "); 49 } 50 } 51 } 52 53 //递归的列出 子孙文件和目录 54 public static void listFiles1(File dir) //space 存储的是空格 55 { 56 File[] files = dir.listFiles(); //列出所有的子文件 57 for (File file : files) 58 { 59 if(file.isFile()) 60 System.out.println("文件名:"+file.getName()); 61 else if(file.isDirectory()) 62 { 63 System.out.println("文件夹:"+file.getName()); 64 listFiles1(file); 65 } 66 }