一、什么叫递归
也就是自身调用自己。
二、一般什么时候使用递归?
还有些如二叉树,结构本身固有递归特性;此外,有一类问题,其本身没有明显的递归结构,但用递归程序求解比其他方法更容易编写程序。
三、经典递归算法
递归阶乘n! = n * (n-1) * (n-2) * ...* 1(n>0)
public static Integer recursionMulity(Integer n){ if(n==1){ return 1; } return n*recursionMulity(n-1); }
2、汉诺塔问题
public static void hanio(int n,char a,char b,char c){ 8 if(n==1) 9 System.out.println("移动"+n+"号盘子从"+a+"到"+c); 10 else{ 11 hanio(n-1,a,c,b);//把上面n-1个盘子从a借助b搬到c 12 System.out.println("移动"+n+"号盘子从"+a+"到"+c);//紧接着直接把n搬动c 13 hanio(n-1,b,a,c);//再把b上的n-1个盘子借助a搬到c 14 } 15 }
3.判定一系列字符串中是否有相同的内容
public class Crf{ public static void main(String[] args) { String[] a = {"a1","a2","a3","b3","c","b","33","33"}; fun(0, a); } public static void fun(int n,String[] a){ for(int i = n; i < a.length-1; i++){ System.out.println(n+" "+(i+1)); if(a[n].equals(a[i+1])){ System.out.println("存在相同字符"); System.out.println(a[n]); } } n++; fun(n,a); } }
文章来源: 递归算法和经典递归例子