第一次接触汉诺塔时,不太理解,就照着代码看,结果花了好长时间都没有理解那几行短短的代码。
现在想想,其实并不难,无非是大象进冰箱的过程。把第二块以上的盘子,从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 }