1. 程式人生 > >python實現斐波那契數列 用遞迴實現求第N個菲波那切數列

python實現斐波那契數列 用遞迴實現求第N個菲波那切數列

斐波那契數列即著名的兔子數列:1、1、2、3、5、8、13、21、34、……

數列特點:該數列從第三項開始,每個數的值為其前兩個數之和,用python實現起來很簡單:

a=0
b=1
while b < 1000:
    print(b)
    a, b = b, a+b

輸出結果:

這裡 a, b = b, a+b 右邊的表示式會在賦值變動之前執行,即先執行右邊,比如第一次迴圈得到b-->1,a+b --> 0+1 然後再執行賦值 a,b =1,0+1,所以執行完這條後a=1,b=1

 

a=0
b=1
while b < 1000:
    print(b,end=',')#end 可以將print輸出到同一行並以 ,號結尾
    a, b = b, a+b

輸出結果:

 

遞迴方式實現斐波那契數列 前n項:


# 遞迴方式實現 生成前20項
lis =[]
for i in range(20):
    if i ==0 or i ==1:#第1,2項 都為1
        lis.append(1)
    else:
        lis.append(lis[i-2]+lis[i-1])#從第3項開始每項值為前兩項值之和
print(lis)

或者

def func(n):
    # 給遞迴一個出口  第一位和第二位都是1
    if n == 1 or n == 2:
        return 1
    else:
        # 從第三位開始  返回上一個數加上上一個數
        return func(n-1) + func(n-2)
        # func(5) + func(4)
        # func(4)+func(3) + func(3) + func(2)
        # func(3)+func(2) + func(2)+func(1) + func(2)+func(1) + 1
        # func(2)+func(1) + 1 + 1+1 + 1+1 + 1
        # 1+1 + 1 + 1+1 +1+1 + 1 = 8
res = func(20)
print(res)

 執行結果