数据结构-递归

  递归:

  通俗理解:自己调用自己本身,实现一些自身循环操作;递归有递和归的过程,递是向下循环,归是向内返回;

  画图理解:比如说,100一直减到1 , 如果小于1 ,那就返回这个函数,这样的过程叫做递归;

  

 

  上代码:

  

 1 package recursion;
 2 
 3 public class simpleRecursion {
 4     
 5     public static void main(String[] args) {
 6         fun(100);
 7         
 8     }
 9     public static void fun(int i){
10         if(i ==0){
11             return;
12         }
13         System.out.print(i + " ");
14         fun(i-1);
15         
16         }
17     }

  测试结果:

100 99 98 97 96 95 94 93 92 91 90 89 88 87 86 85 84 83 82 81 80 79 78 77 76 75 74 73 72 71 70 69 68 67 66 65 64 63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 

  递归的高级应用:汉诺塔

  通俗理解:其实汉诺塔呢,无非就是叠方块,有3跟柱子,把最左边的方块通过中间的柱子移动到最右边的柱子上;

  画图理解:把三个方块通过中间柱子移动到最右边的柱子,思想:首先把上面两个方块看成一个,那么我们就可以直接把上面那个移动到中间柱子,然后再把最下边那个移动到最右边然后再重新把一个看成两个,直到移动到最右边一端,这就借鉴了递归的思想,先把一部分看成整体,然后再分开求解;

  

 

  思想讲完了,直接上代码吧:

  

 1 package recursion;
 2 /**
 3  * 递归
 4  * @author caizhou
 5  *
 6  */
 7 public class Recursion {
 8     public static void main(String[] args) {
 9         
10         hanuota(3, 'A', 'B', 'C');
11     }
12     public static void hanuota(int topN,char from,char inter , char to){
13         if(topN == 1){
14             System.out.println("方块1,从" + from + "塔座到" + to);
15         }else{
16             hanuota(topN-1, from, to, inter);
17             System.out.println("方块"+ topN +"从" + from + "塔座到" + to+ "塔座");
18             hanuota(topN-1, inter, from, to);
19         }
20     }
21 }

  测试结果:

方块1,从A塔座到C
方块2从A塔座到B塔座
方块1,从C塔座到B
方块3从A塔座到C塔座
方块1,从B塔座到A
方块2从B塔座到C塔座
方块1,从A塔座到C

  到此,递归就讲完了,希望对你有所帮助!

 

 

  

posted on 2020-04-03 14:26  学弟1  阅读(269)  评论(0编辑  收藏  举报

导航