郝斌--数据结构---汉诺塔实现(c语言实现)
1 #include <stdio.h> 2 3 void hannuota(int n,char A,char B,char C)//表示A借助于B移到C 4 { 5 /* 6 如果是1个盘子 7 直接将柱子上的盘子从A移到C 8 否则 9 先将A柱子上的n-1个盘子从C移到B 10 直接将A柱子上的盘子从A移到C 11 最后将B柱子上的n-1个盘子借助A移到C 12 */ 13 if(1 == n) 14 { 15 printf("将编号为%d的盘子直接从%c柱子移到%c柱子\n",n,A,C); 16 } 17 else 18 { 19 hannuota(n-1, A, C, B); 20 printf("将编号为%d的盘子直接从%c柱子移到%c柱子\n",n,A,C); 21 hannuota(n-1, B, A, C); 22 } 23 } 24 25 int main(void) 26 { 27 char ch1 = 'A'; 28 char ch2 = 'B'; 29 char ch3 = 'C'; 30 int n; 31 32 printf("请输入要移动的个数: "); 33 scanf("%d", &n); 34 35 hannuota(n,'A','B','C'); 36 37 return 0; 38 }
运行示例