汉诺塔问题算法实现:递归方法详解及 Python 代码
汉诺塔问题的算法实现可以使用递归方法来完成。具体步骤如下:
-
如果只有一个盘子,则直接将其从起始柱子移动到目标柱子。
-
如果有多个盘子,则将其分为两部分:最下面的盘子和上面的所有盘子。
-
将上面的所有盘子从起始柱子移动到辅助柱子。
-
将最下面的盘子从起始柱子移动到目标柱子。
-
将上面的所有盘子从辅助柱子移动到目标柱子。
下面是实现汉诺塔问题的 Python 代码:
def hanoi(n, from_rod, to_rod, aux_rod):
if n == 1:
print('Move disk 1 from rod', from_rod, 'to rod', to_rod)
return
hanoi(n-1, from_rod, aux_rod, to_rod)
print('Move disk', n, 'from rod', from_rod, 'to rod', to_rod)
hanoi(n-1, aux_rod, to_rod, from_rod)
# 测试
n = 3
hanoi(n, 'A', 'C', 'B')
输出结果:
Move disk 1 from rod A to rod C
Move disk 2 from rod A to rod B
Move disk 1 from rod C to rod B
Move disk 3 from rod A to rod C
Move disk 1 from rod B to rod A
Move disk 2 from rod B to rod C
Move disk 1 from rod A to rod C
原文地址: https://www.cveoy.top/t/topic/n6CE 著作权归作者所有。请勿转载和采集!