汉诺塔——递归
汉诺塔(Hanoi Tower),又称河内塔,源于印度一个古老传说。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,任何时候,在小圆盘上都不能放大圆盘,且在三根柱子之间一次只能移动一个圆盘。问应该如何操作? 假如有三根柱子: 1、过程分析: (1)当只有两个盘子的时候(移动两次): a--b a--c b--c (2)当有三个盘子的时候: 应该考虑将最上层的两个较小的盘子先从a移动到b,然后将a上的最大的盘子(最底层)移动到c。 将最上层的盘子移到c; 中间的盘子移到b; 再将第一步的c上的盘子移动到b; 至此,最上层的两个盘子已经成功的移动到了b。 现在,需要将a柱子上的最下层的盘子移动到c柱子上。 然后再将a柱子作为辅助位,b柱子作为起点,c柱子作为终点,将b上的两个盘子移动到c即可。 ...... (3)当有n个盘子的时候,需要先将c柱子作为辅助位,a为起始位,b为终点。将上面的n-1个盘子从a移动到b。 然后将最下层的盘子从a移动到c。 最后将b上面的n-1个盘子从b移动到c。 2、代码实现: #include<stdio.h> void hanoi(int n,char A,char B,char C){//n代表 a柱子上面的盘子数量 if(n==1)