以下是一个递归算法实现汉诺塔问题的示例代码:

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

其中,n 表示有多少个盘子,from_rod 表示起始位置,to_rod 表示目标位置,aux_rod 表示辅助位置。在 n=1 时,直接将盘子从起始位置移动到目标位置;否则,先将上面 n-1 个盘子从起始位置经过目标位置移动到辅助位置,再将最后一个盘子从起始位置移动到目标位置,最后将剩下的 n-1 个盘子从辅助位置经过起始位置移动到目标位置。

汉诺塔问题:递归算法实现详解

原文地址: https://www.cveoy.top/t/topic/n6CC 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录