什么是递归 指在当前方法内调用自己的这种现象。
调用时,要有一个退出的条件,否则会死循环。
计算1~n的和 1到3的和:1 + 2 + 3。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 public  static  void  main (String[] args)   {    int  num = 3 ;          int  sum = getSum(num);          System.out.println(sum); } private  static  int  getSum (int  num)   {         if  (num == 1 ){         return  1 ;     }          return  num + getSum(num-1 ); } 
 
递归求阶乘 10的阶乘10!
10 * 9 * 8 * 7 * 6 * 5 * 4 * 3 * 2 * 1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 public  static  void  main (String[] args)   {    int  num = 4 ;          int  sum = getJieCheng(num);          System.out.println(sum); } private  static  int  getJieCheng (int  num)   {         if  (num == 1 ){         return  1 ;     }          return  num * getJieCheng(num-1 ); } 
 
斐波那契数列 # 什么是斐波那契数列 
又称黄金分割数列、因数学家列昂纳多 · 斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为 “兔子数列”
指的是这样一个数列:1、1、2、3、5、8、13、21、34、……
# 求数列的第6位的值是多少 
递归分析
1 2 3 4 5 当位数为1 和2 时,当前返回的值应该是1 ; 当位数为3 时,返回值应该 =2 =1 +1 ; 当位数为4 时,返回值 =3 =2 +1 ; 当位数为5 时,返回值 =5 =3 +2 ; 大于等于3 的情况下,当前位数(n)的数值 =f(n-1 )+f(n-2 ) 
 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 public  static  void  main (String[] args)   {    int  f = f(3 );     System.out.println(f);          for  (int  i = 1 ; i <= 15 ; i++) {          System.out.print(f(i) + "\t" );     } } public  static  int  f (int  n)   {    if  (n == 1  || n == 2 )         return  1 ;     else          return  f(n - 1 ) + f(n - 2 ); } 
 
文件搜索 搜索指定目录下指定扩展名的文件,例如:D盘下 aaa目录中所有的 .txt文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 public  static  void  printDir (File dir)   {         File[] files = dir.listFiles();          for  (File file : files) {         if  (file.isFile()) {                          if  (file.getName().endsWith(".txt" )) {                 System.out.println("文件名:"  + file.getAbsolutePath());             }         } else  {                          printDir(file);         }     } }