def move(n,a,b,c): if n == 1: print(a,"-->",c) #一块盘时的操作 else: move(n-1,a,c,b) #最大盘移动前,为n-1块的操作 print(a,"-->",c) #将最大的盘从A移动至C move(n-1,b,a,c) #最大盘移动后,为n-1块的操作
简单补充一下理解,如果不对请指出:
汉诺塔的操作可分解成最大盘移动前和最大盘移动后,均为n-1块时的操作。
区别在于,最大盘移动前,是将A柱的n-1块移动到B,以将最大盘移动到C柱上;而最大盘移动后,则要将B柱的n-1块移动到C柱上来完成游戏。
而n-1块移动过程又能继续分解:n-2、n-3...一直到1,也就是只有一块盘的时候,移动一步就行。这就是这道题的递归。
为什么开始abc是小写,后来就成了大写呢?
我一开始也犯了这个低级错误,就是字母没有用' '括住表示字符,结果跑不出来ORZ
Sign in to make a reply
黑漆漆的四壁
简单补充一下理解,如果不对请指出:
汉诺塔的操作可分解成最大盘移动前和最大盘移动后,均为n-1块时的操作。
区别在于,最大盘移动前,是将A柱的n-1块移动到B,以将最大盘移动到C柱上;而最大盘移动后,则要将B柱的n-1块移动到C柱上来完成游戏。
而n-1块移动过程又能继续分解:n-2、n-3...一直到1,也就是只有一块盘的时候,移动一步就行。这就是这道题的递归。