汉诺塔游戏。游戏目标是将A柱子上的盘子移动到C柱子上,且每次小的盘子要放在大的盘子上面。如只有一个盘子则直接移至C柱子。以如图所示为例子。
3个盘子要移动至C柱子,具体步骤为:
A到C,A到B, C到B, A到C, B到A, B到C, A到C。
总共7步。也就是
- 先把A柱子两个盘子(n-1)通过C柱子移动到B柱子
- 再把A柱子剩余的一个盘子移动到C柱子
- 最后把B柱子上的两个盘子(n-1)通过A柱子移动到C柱子上。
经实测,所需移动步数与盘子数(n)的表达式如下:1(n=1)和2^n-1(n>1)。
由此可以用递归函数得:
当n==1 return 1;
当n>1 f(n-1);
创建一个函数Hanoi(number,'A', 'B', 'C' ); 表示将n个盘子从A柱子通过B柱子移动到C柱子的过程。(对应第一三步)
再创建一个函数Move(x, y); 表示将一个盘子从x柱子移动到y柱子。(对应第二步)
由此可以写出代码:
输入4为例,输出结果如下:
标签:柱子,游戏,C语言,汉诺塔,盘子,移动,函数 From: https://blog.csdn.net/2402_82484551/article/details/137154009