汉诺塔问题是一个经典的递归问题,其规则如下:

有三个柱子 A、B、C,A 柱子上上有 n 个盘子,盘子大小不一,大盘子在下面,小盘子在上面。要求把 A 柱子上的盘子全部移动到 C 柱子上,并且每次只能移动一个盘子,大盘子不能放在小盘子上面。

以下是汉诺塔问题的 Python 实现:

def hanoi(n, A, B, C):
    if n == 1:
        print('Move disk 1 from', A, 'to', C)
        return
    hanoi(n-1, A, C, B)
    print('Move disk', n, 'from', A, 'to', C)
    hanoi(n-1, B, A, C)

n = int(input('Enter the number of disks: '))
hanoi(n, 'A', 'B', 'C')

函数 hanoi 接受四个参数,n 表示盘子的数量,A、B、C 表示三个柱子。当 n 等于 1 时,直接把盘子从 A 柱子移到 C 柱子即可。否则,先把 A 柱子上的前 n-1 个盘子移到 B 柱子上,再把 A 柱子上的第 n 个盘子移到 C 柱子上,最后把 B 柱子上的 n-1 个盘子移到 C 柱子上。这里的递归调用实现了汉诺塔问题的解决。


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

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