递归算法和经典递归例子

匿名 (未验证) 提交于 2019-12-03 00:37:01

一、什么叫递归

也就是自身调用自己。

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


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

三、经典递归算法

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



易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!