递归算法运用

public static void main(String[] args) {
File file=new File("F://wuzil");
//listfile(file);

File file1=new File("F://wuzili");
//deletefile(file1);

int num= getNum(5);
System.out.println(num);
}

//一:递归方法列出指定目录下所有的文件名
public static boolean listfile(File file) {
if(!file.exists()) {
return false;
}
File [] str=file.listFiles();//listFiles()返回指定路径下所有的目录和文件
for(File fi:str){
System.out.println(fi.getName());//获取wuzili目录下的目录名和文件名
if(fi.isFile()){
System.out.println(fi.getName());//通过方法的递归获取wuzili目录下所有的文件名,包括子目录下的文件名,不包含目录名。
}else{
//方法的递归
listfile(fi);//当wuzili目录下有子目录的时候,走该递归方法,下一次参数传递的是子目录名,而不是第一次的wuzili目录参数
}
}
return true;
}

//二:递归方法删除指定目录下文件夹和文件(当目录下有子目录或者文件时,则该文件不能删除,所以必须要先删除子目录或者文件)
public static boolean deletefile(File file) {
boolean flag = false;
if(!file.exists()){
return flag;
}
File[] filelist = file.listFiles();
for(File file1:filelist ){
if(file1.isFile()){
file1.delete();
}else{
deletefile(file1);
}
}
flag = file.delete();
return flag;

}
//三:递归方法求n的阶乘(n!=n*(n-1)!)
public static int getNum(int n) {
int num = 0;
if(n==0) {//规定0的阶乘等于1
return 1;
}else {
num = n*getNum(n-1);
}
return num;
}

原文地址:https://www.cnblogs.com/ylsx/p/13178051.html