def move(n,a,b,c): if n==1: print(a,'-->',c) #如果只有一个盘子,直接从a柱移动到c柱 else: move(n-1,a,c,b) #将a柱上的n-1个盘子通过c柱移动到b柱 print(a,'-->',c) #移动完n-1个盘子之后,a柱剩下的最大盘子直接从a柱移到c柱 move(n-1,b,a,c) #b柱上的n-1个盘子通过a柱移动到c柱 move(3,'a','b','c')
其实汉诺塔问题一般不要去自己在脑海里想n个柱子每一步的移动方式(尝试过,脑子爆炸了),最主要的就是把最大的盘子和剩下的n-1个盘子当成两个独立的整体去思考,这样一来思路就清晰多了
然后再将n-1个盘子进行细化(因为n-1个盘子其中也有最大的那个盘子),这样一来递归逻辑就形成了
有道理!!!
牛逼
太棒了。看了后面的注释,终于明白这个递归是怎么回事了。
你好棒,谢谢,终于懂了
学习了,谢谢
思路清晰,懂了
Sign in to make a reply
Schmetterlingsnetz
其实汉诺塔问题一般不要去自己在脑海里想n个柱子每一步的移动方式(尝试过,脑子爆炸了),最主要的就是把最大的盘子和剩下的n-1个盘子当成两个独立的整体去思考,这样一来思路就清晰多了
然后再将n-1个盘子进行细化(因为n-1个盘子其中也有最大的那个盘子),这样一来递归逻辑就形成了