Discuss / Python / 递归函数 作业

递归函数 作业

Topic source
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,也就是只有一块盘的时候,移动一步就行。这就是这道题的递归。

红特小将

#2 Created at ... [Delete] [Delete and Lock User]

为什么开始abc是小写,后来就成了大写呢?

我一开始也犯了这个低级错误,就是字母没有用' '括住表示字符,结果跑不出来ORZ


  • 1

Reply