下面是使用递归的方法来编写汉诺塔程序的Python代码:
def hanoi(n, source, target, auxiliary):
if n > 0:
# 将 n-1 个盘子从源柱子移动到辅助柱子
hanoi(n-1, source, auxiliary, target)
# 将第 n 个盘子从源柱子移动到目标柱子
print(f"Move disk {n} from {source} to {target}")
# 将 n-1 个盘子从辅助柱子移动到目标柱子
hanoi(n-1, auxiliary, target, source)
# 测试
n = 3 # 盘子的数量
hanoi(n, 'A', 'C', 'B')
请注意,此代码仅打印出了每一步的移动,如果你希望将移动的步骤保存在列表中以便进一步操作,你可以将 print
语句替换为一个列表的追加操作。
这段代码中的 hanoi
函数采用了四个参数: n
表示要移动的盘子数量, source
表示源柱子, target
表示目标柱子, auxiliary
表示辅助柱子。函数首先将 n-1 个盘子从源柱子移动到辅助柱子,然后将第 n 个盘子从源柱子移动到目标柱子,最后再将 n-1 个盘子从辅助柱子移动到目标柱子。这个过程通过递归调用函数来实现。
在测试部分,我们将一个包含 3 个盘子的汉诺塔问题的解传递给 hanoi
函数,并将源柱子命名为 ‘A’,目标柱子命名为 ‘C’,辅助柱子命名为 ‘B’。