python實現斐波那契數列 用遞迴實現求第N個菲波那切數列
阿新 • • 發佈:2018-11-19
斐波那契數列即著名的兔子數列: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)
執行結果