【c语言】数据结构(递归->汉诺塔)

   

  第一次接触汉诺塔时,不太理解,就照着代码看,结果花了好长时间都没有理解那几行短短的代码。

现在想想,其实并不难,无非是大象进冰箱的过程。把第二块以上的盘子,从a柱移动到b柱,然后把

最底下的盘子,移动到c柱,在将剩下的盘子从b柱移动到c柱。

 1 #include<stdio.h>
 2 void hnt(int n,char a,char b,char c)
 3 {
 4     if(n==1)
 5         printf("	%c->%c
",a,c);
 6         else
 7     {
 8         hnt(n-1,a,c,b);//第一步:把最低下盘子以上的n-1个盘子看做一个整体,从a通过c移动到b
 9         printf("	%c->%c
",a,c);//第二步:把最低下的盘子n,移动到c
10         hnt(n-1,b,a,c);//第三步:在将n-1个盘子,从b通过a移动到c
11 
12     }
13 }
14 void main()
15 {
16     char a,b,c;
17     hnt(5,'a','b','c');
18 
19 }
原文地址:https://www.cnblogs.com/duolaAbao/p/6600245.html