1 #include <stdio.h> 2 3 /** 4 * 汉诺塔 5 * 游戏规则: 6 * 下一层必须大于上一层 7 * 每次只能移动最上面的一层 8 * 获取圆盘的个数n 9 * n=3,分步骤:a->c,a->b,c->b,a-c,b-a,b->c,a->c 10 */ 11 void move(int n,char a,char b,char c){ 12 /** 13 * 伪算法 14 * 15 * 如果是1 16 * 直接将A柱子上的n个盘子从A移动到C 17 * 否则 18 * 先将A柱子上的n-1个盘子借助C移动到B 19 * 直接将A柱子上的n个盘子从A移动到C 20 * 最后将B柱子上的n-1个盘子借助A移动到C 21 */ 22 if(1 == n) 23 { 24 printf("No:%d,%c-->%c\n",n,a,c); 25 } 26 else 27 { 28 move(n-1,a,c,b); 29 printf("No:%d,%c-->%c\n",n,a,c); 30 move(n-1,b,a,c); 31 } 32 } 33 34 int main(){ 35 int len; 36 printf("num:"); 37 scanf("%d",&len); 38 if(!(len > 0)){ 39 return 0; 40 } 41 char a= ‘A‘; 42 char b= ‘B‘; 43 char c= ‘C‘; 44 move(len,a,b,c); 45 return 0; 46 }