递归

递归算法:
要点:1,递归要求;定义;
   2,特点;分析
   3,递归算法删除非空文件夹
 
1,要求 1,递推条件;
  2,返回条件;
递归定义:方法自己调用自己
(注意:如果递归方法不加限制(方法没有返回的时候),程序最会会抛出StackOverflowError异常)
 
2,递归方法与普通方法的比较
  1. 递归方法:优点:代码简洁
  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();
 }  
 }
} 
同样也是要注意代码中关于递归的两个主要条件,一个都不能少。
原文地址:https://www.cnblogs.com/shuaishuai1993/p/4532011.html