1. 程式人生 > >python 遞迴方法 斐波那契數列—漢諾塔

python 遞迴方法 斐波那契數列—漢諾塔

#普通方法生成
def feibo(n):
    a,b=0,1
    print('0,1',end='')
    for i in range(n-1):
        a,b=b,a+b
        print(',{0}'.format(b),end='')

#遞迴方法生成
def fib(n):
    if n<=1:#遞迴的邊界條件

        return n
    else:
      return fib(n-1)+fib(n-2)

if __name__ == '__main__':
    n=int(input('輸入數字:'))
    b
=fib(n) print(b) feibo(n)

 漢諾塔:漢諾塔(又稱河內塔)問題是源於印度一個古老傳說的益智玩具。大梵天創造世界的時候做了三根金剛石柱子,在一根柱子上從下往上按照大小順序摞著64片黃金圓盤。大梵天命令婆羅門把圓盤從下面開始按大小順序重新擺放在另一根柱子上。並且規定,在小圓盤上不能放大圓盤,在三根柱子之間一次只能移動一個圓盤。

def hanoi(a,b,c,n):
    if n==1:#遞迴結束條件
        print (a,'->',c)
    else:
        hanoi(a,c,b,n-1)#首先需要把 (N-1) 個圓盤移動到 b
print (a,'->',c)#將a的最後一個圓盤移動到c hanoi(b,a,c,n-1)#再將b的(N-1)個圓盤移動到c n=int(input('輸入數字:')) hanoi('a','b','c',n)