汉诺塔
在本练习中,您将用递归算法实现汉诺塔谜题。游戏目标是按照以下规则,把所有圆盘从三根柱子中的一根移动到另一根:
- 每次只能移动一个圆盘。
- 只能从某一堆的最上方取下圆盘,并将其放到另一堆的最上方。
- 不能将较大的圆盘放在较小的圆盘上。

所示算法实现了该游戏,包含 4 个圆盘和名为 'A'、'B'、'C' 的 3 根柱子。代码中有两个错误。实际上,如果您运行它,会因为超过最大递归深度而导致控制台崩溃。您能找到并修复这些错误吗?
本练习是课程的一部分
Python 中的数据结构与算法
练习说明
- 修正基本情形。
- 修正对
hanoi()函数的调用。
交互式实操练习
通过完成这段示例代码来试试这个练习。
def hanoi(num_disks, from_rod, to_rod, aux_rod):
# Correct the base case
if num_disks >= 0:
# Correct the calls to the hanoi function
hanoi(num_disks, from_rod, aux_rod, to_rod)
print("Moving disk", num_disks, "from rod", from_rod,"to rod",to_rod)
hanoi(num_disks, aux_rod, to_rod, from_rod)
num_disks = 4
source_rod = 'A'
auxiliar_rod = 'B'
target_rod = 'C'
hanoi(num_disks, source_rod, target_rod, auxiliar_rod)