汉诺塔怎么玩
- 选层数:3 层只要 7 步,适合热身;每多一层,步数差不多翻一倍,8 层要 255 步。每种层数各自保存进度和最佳成绩。
- 拿起最上面的盘子:点一根柱子,最上面的盘子会抬起来;也可以按住这个盘子直接拖。
- 放到另一根柱子上:再点想放的柱子,或者把拖着的盘子在那根柱子上方松开。盘子只能放在空柱子上,或者放在比它大的盘子上。
- 把整座塔搬到 C 柱:所有盘子都按从大到小叠在最右边的 C 柱上就赢了。上方会同时显示你的步数和最少步数 2ⁿ − 1。
- 卡住了就撤销、提示或演示:撤销退回一步;提示会从当前局面替你走最好的一步;演示会把剩下的最短走法自动走完,方便看清规律。用过提示或演示的那一局不计入最佳记录。
3 层汉诺塔图解(7 步)
下面是 3 层的最短走法,每一步一张图。留意两点:最小的盘每隔一步动一次;最大的盘只动一次,而且正好在正中间那一步。
4 层也是同样的思路:先用 7 步把上面三层搬到中间的 B 柱,再把 4 号盘搬到 C 柱,最后再用 7 步把三层搬回来,一共 15 步。层数越多,就是把这个过程一层套一层地重复。
汉诺塔最少步数表(3~8 层)
| 层数 | 最少步数(2ⁿ − 1) | 每秒一步要多久 |
|---|---|---|
| 3 | 7 | 7 秒 |
| 4 | 15 | 15 秒 |
| 5 | 31 | 31 秒 |
| 6 | 63 | 1 分 3 秒 |
| 7 | 127 | 2 分 7 秒 |
| 8 | 255 | 4 分 15 秒 |
公式来自递归思路:搬 n 层 = 先搬走上面 n − 1 层 + 搬最大的一个 + 再把 n − 1 层搬回来,所以 步数(n) = 2 × 步数(n − 1) + 1,算出来就是 2ⁿ − 1。
汉诺塔规律与技巧
- 从最大的盘想起(递归法)。先问:还没到位的最大那个盘要去哪根柱子?它上面的盘子就必须先全部叠到剩下那根柱子上。再对这摞小一点的塔问同样的问题。这个方法从任何局面都能用,本站的“提示”按钮就是这样算的。
- 盯住最小的盘(口诀法)。单数步移动最小的盘,始终朝同一个方向转圈;双数步做唯一另一种合法移动。奇数层时小盘按 A→C→B→A 走,偶数层时按 A→B→C→A 走。
- 单号不压单号,双号不压双号。在最短走法里,单数号的盘从不直接放在单数号的盘上(双数同理)。如果你正要这么放,多半是在绕远路。
- 走到一半检查一下。完美解法走到第 2ⁿ⁻¹ − 1 步时,除了最大的盘,其余盘子应该全部叠在中间的 B 柱上。
汉诺塔的来历和用途
汉诺塔由法国数学家卢卡斯(Édouard Lucas)在 1883 年推出,是计算机课讲“递归”最常用的例子,也常用来讲 2 的乘方、训练提前规划。给孩子玩可以从 3 层开始,7 步熟练以后加一层,再一起想想步数为什么差不多翻倍。
喜欢这种要提前想好几步的游戏,还可以试试孔明棋线上玩(跳到只剩一枚)、三国华容道(附横刀立马 81 步解法)和数字华容道。英文版页面与本页共用同一份存档。