汉诺塔游戏其实是有规律可循的,可以用递归的思想,其实就是两个为一组来回折腾。如果自己想也能弄出来,就是有可能把自己搞晕。
下面用递归的思想解决这个问题。实际上很简单,一开始A柱子上有n个盘子,我可以把上面n-1个先放到B上面,最下面一个大的放到C柱子上。然后再把B柱子上这n-1个放到C柱子。

下面是代码,非常简单:
def hnt(n,a,b,c):
if n == 1:
print(f'{a}柱子最上面一个-->{c}柱子')
else:
hnt(n-1,a,c,b)
print(f'{a}柱子最上面一个-->{c}柱子')
hnt(n-1,b,a,c)
hnt(5,'A','B','C')
运行一下就出现了这个答案:
A柱子最上面一个-->C柱子
A柱子最上面一个-->B柱子
C柱子最上面一个-->B柱子
A柱子最上面一个-->C柱子
B柱子最上面一个-->A柱子
B柱子最上面一个-->C柱子
A柱子最上面一个-->C柱子
A柱子最上面一个-->B柱子
C柱子最上面一个-->B柱子
C柱子最上面一个-->A柱子
B柱子最上面一个-->A柱子
C柱子最上面一个-->B柱子
A柱子最上面一个-->C柱子
A柱子最上面一个-->B柱子
C柱子最上面一个-->B柱子
A柱子最上面一个-->C柱子
B柱子最上面一个-->A柱子
B柱子最上面一个-->C柱子
A柱子最上面一个-->C柱子
B柱子最上面一个-->A柱子
C柱子最上面一个-->B柱子
C柱子最上面一个-->A柱子
B柱子最上面一个-->A柱子
B柱子最上面一个-->C柱子
A柱子最上面一个-->C柱子
A柱子最上面一个-->B柱子
C柱子最上面一个-->B柱子
A柱子最上面一个-->C柱子
B柱子最上面一个-->A柱子
B柱子最上面一个-->C柱子
A柱子最上面一个-->C柱子

事实上,汉诺塔游戏也可以用列表玩,使用pop()就等同于每次取出最上面一个。
本文介绍了一种使用递归思想解决汉诺塔游戏的方法,通过将问题分解为更小的问题,最终实现所有盘子从A柱移动到C柱的目标。文中还提供了Python代码示例。
4285

被折叠的 条评论
为什么被折叠?



