递归算法和经典递归例子

一、什么叫递归

  递归函数就是直接或间接调用自身的函数,也就是自身调用自己。

二、一般什么时候使用递归?

  递归是常用的编程技术,其基本思想就是“自己调用自己”,一个使用递归技术的方法即是直接或间接的调用自身的方法。递归方法实际上体现了“以此类推”、“用同样的步骤重复”这样的思想。

    还有些数据结构如二叉树,结构本身固有递归特性;此外,有一类问题,其本身没有明显的递归结构,但用递归程序求解比其他方法更容易编写程序。

三、经典递归算法

 1、递归阶乘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);
    }
}



猜你喜欢

转载自blog.csdn.net/qq_32899201/article/details/80844021