先科普一下什么叫斐波那契數列,以下內容摘自百度百科:
斐波那契數列(Fibonacci sequence),又稱黃金分割數列、因意大利數學家列昂納多·斐波那契(Leonardoda Fibonacci)以兔子繁殖為例子而引入,指的是這樣一個數列:1、1、2、3、5、8、13、21、34。。。這個數列從第3項開始,每一項都等於前兩項之和。
根據以上定義,用python定義一個函數,用於計算斐波那契數列中第n項的數字是多少:
def fib_recur(n): if n==0: return "" elif n==1 or n==2: return 1 else: return (fib_recur(n-1) + fib_recur(n-2)) #每一項返回的結果都是前兩項之和
調用這個函數試一下:
print(fib_recur(5))
結果是:
5
如果要把到第n項的斐波那契數列都列出來,那么代碼如下:
num=int(input("請問您需要列出幾項斐波那契數列?")) if num<=0: print("請輸入正整數") else: print("斐波那契數列:",end="") for i in range(num+1): print(fib_recur(i))
運行結果如下:
請問您需要列出幾項斐波那契數列?5
斐波那契數列:
1
1
2
3
5
參考:麻省理工學院公開課:計算機科學及編程導論 (第4課)
附:不用遞歸方法計算出斐波那契數列
num=int(input("請問您需要列出幾項斐波那契數列?")) #先定義第一項和第二項 num1=1 num2=1 for i in range(num): print(num1) num1,num2=num2,num1+num2 #把第二項的值賦予第一項,第三項的值賦予第二項,以此類推
運行結果如下:
請問您需要列出幾項斐波那契數列?5
1
1
2
3
5