汉诺塔问题算法实现及 Python 代码示例
汉诺塔问题是经典的递归问题,其算法实现如下:
-
定义一个函数
hanoi(n, a, b, c),表示将n个盘子从a移动到c,中间使用b作为中介。 -
当
n=1时,直接将a上的盘子移动到c,结束递归。 -
当
n>1时,先将n-1个盘子从a移动到b,使用c作为中介,即hanoi(n-1, a, c, b)。 -
然后将第
n个盘子从a移动到c。 -
最后将
n-1个盘子从b移动到c,使用a作为中介,即hanoi(n-1, b, a, c)。 -
完成。
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
原文地址: https://www.cveoy.top/t/topic/n6Cy 著作权归作者所有。请勿转载和采集!