汉诺塔问题是经典的递归问题,其算法实现如下:

  1. 定义一个函数 hanoi(n, a, b, c),表示将 n 个盘子从 a 移动到 c,中间使用 b 作为中介。

  2. n=1 时,直接将 a 上的盘子移动到 c,结束递归。

  3. n>1 时,先将 n-1 个盘子从 a 移动到 b,使用 c 作为中介,即 hanoi(n-1, a, c, b)

  4. 然后将第 n 个盘子从 a 移动到 c

  5. 最后将 n-1 个盘子从 b 移动到 c,使用 a 作为中介,即 hanoi(n-1, b, a, c)

  6. 完成。

Python 代码实现:

def hanoi(n, a, b, c):
    if n == 1:
        print(a, '->', c)
    else:
        hanoi(n-1, a, c, b)
        print(a, '->', c)
        hanoi(n-1, b, a, c)

# 测试
hanoi(3, 'A', 'B', 'C')

输出结果:

A -> C
A -> B
C -> B
A -> C
B -> A
B -> C
A -> C
汉诺塔问题算法实现及 Python 代码示例

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

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