递归
递归:函数的自身调用函数的自身。
案例一:计算5的阶乘
public class Demo{
public static void main(String[] args) {
int result = print(5);
System.out.println("结果是:"+ result);
}
public static int print(int num){
if(num==1){
return 1;
}else{
return num*print(num-1);
}
}
public static int test(int num){
int result = 1;
while(num>0){
result = result*num;
num--;
}
return result;
}
}

案例二:列出一个文件夹的子孙文件与目录。
案例三:列出指定目录中所有的子孙文件与子孙目录名,要求名称前面要有相应数量的空格:
案例四:列出指定目录中所有的子孙文件与子孙目录名,要求要是树状结构
如图:
|--xx
| |--xx
| | |--xx
| | | |--xx
| | | | |--xxxx
| | | |--xx
| | | | |--xxxx
| | | |--xx
| | | | |--xxxx
demo:
public class Demo {
public static void main(String[] args) {
/* File dir = new File("F:\\workspace");
listFiles3(dir,"|--");*/
File dir = new File("F:\\aa");
deleteDir(dir);
}
//删除了一个非空的目录
public static void deleteDir(File dir){ // bb
File[] files = dir.listFiles(); //列出了所有的子文件
for(File file : files){
if(file.isFile()){
file.delete();
}else if(file.isDirectory()){
deleteDir(file);
}
}
dir.delete();
}
public static void listFiles3(File dir,String space){ //space 存储的是空格
File[] files = dir.listFiles(); //列出所有 的子文件
for(File file : files){
if(file.isFile()){
System.out.println(space+file.getName());
}else if(file.isDirectory()){
System.out.println(space+file.getName());
listFiles3(file,"| "+space);
}
}
}
//列出一个文件夹的子孙文件与目录。
public static void listFiles2(File dir,String space){ //space 存储的是空格
File[] files = dir.listFiles(); //列出所有的子文件
for(File file : files){
if(file.isFile()){
System.out.println(space+file.getName());
}else if(file.isDirectory()){
System.out.println(space+file.getName());
listFiles2(file," "+space);
}
}
}
//列出一个文件夹的子孙文件与目录。
public static void listFiles1(File dir){
File[] files = dir.listFiles(); //列出所有的子文件
for(File file : files){
if(file.isFile()){
System.out.println("文件名:"+file.getName());
}else if(file.isDirectory()){
System.out.println("文件夹:"+file.getName());
listFiles1(file);
}
}
}
}
网友评论