递归算法:
要点:1,递归要求;定义;
2,特点;分析
3,递归算法删除非空文件夹
1,要求 :1,递推条件;
2,返回条件;
递归定义:方法自己调用自己
(注意:如果递归方法不加限制(方法没有返回的时候),程序最会会抛出StackOverflowError异常)
2,递归方法与普通方法的比较:
- 递归方法:优点:代码简洁
- 缺点:内存开销大,性能不高(每次递归都会相应的开辟空间,)
案例分析1:求自然数n的阶乘:(n=10)
public class JieChengDemo
{
public static void main(String[] args)
{
int n = 10;
int j = jieCheng(n);
System.out.println(j);
}
// 递推条件:jieChengN=n*jieCheng(n-1);
// 返回条件:
public static int jieCheng(int n)
{
// 求自然数n的阶乘n!
if (n == 0)
{
return 1;// 返回条件:
}
return n * jieCheng(n - 1); //递推条件
}
}
递归方法分析2:
一个和尚一直在讲"从前有个庙...."一直讲下去,以下是对和尚讲故事讲到第三遍时,结束,分析过程:
3,递归算法删除非空文件夹:(文件夹下可能有N层文件或者文件夹)
static void delete(File file){
File[] childen = file.listFiles();
if(childen!=null){
for(int i=0;i<childen.length;i++){
File f=childen[i];
if(f.isFile()){ //返回条件
f.delete();
}else{
delete(f);
//递归条件
}
}
file.delete();
}
}
}
同样也是要注意代码中关于递归的两个主要条件,一个都不能少。