python 列印斐波那契數列 使用遞迴函式版本

2021-08-15 01:08:15 字數 812 閱讀 9308

使用python列印出斐波那契數列的過程中需要特別注意的是數列中的值有前兩項相加而來,所以需要兩項同時賦值,不能分開賦值,分開賦值會導致數列變為等比數列

#!/usr/bin/python

#-*- coding:utf-8 -*-

def fib(n):

a=0b=1

for i in range(n-1):

a,b=b,a+b

return a

print fib(int(raw_input("數列中位置")))

或者使用遞迴函式,因為我又在環境中裝了個python3所以遞迴函式使用python3的語法編寫,跟上邊的函式格式上有點不一樣,請注意

#/usr/bin/python3

#-*- conding:utf-8 -*-

def fin(n):

if n==1 or n==2:

return 1

else:

return fin(n-1) + fin(n-2)

print (fin(int(input("請輸入要計算的項:"))))

實測是正確的,但是使用遞迴的話會造成極大的資源消耗,計算前10項很快,計算第30項結果時耗時大約有1秒。計算第50項的結果耗時已經超過5分鐘。附一張資源消耗情況截圖(紅框中是遞迴函式的程序,消耗很驚人了,謹記謹慎使用遞迴):

斐波那契數列 斐波那契數列python實現

斐波那契數列 fibonacci sequence 又稱 分割數列 因數學家列昂納多 斐波那契 leonardoda fibonacci 以兔子繁殖為例子而引入,故又稱為 兔子數列 指的是這樣乙個數列 1 1 2 3 5 8 13 21 34 在數學上,斐波納契數列以如下被以遞推的方法定義 f 1 ...

python 斐波那契數列

用python寫斐波那契數列當然大家都寫的出來。當時如果用一行 寫呢。本來沒有打算用一行 寫的。後來看到有用一行 寫階乘的。reduce lambda x,y x y,i for i in range 1,n 1 當然在這之前需要 from functools import 好吧,如果你願意,就算兩...

python斐波那契數列

學習過python基礎語法,我們嘗試做乙個簡單的斐波那契數列。斐波納契數列 兩個元素的總和確定了下乙個數 a,b 0,1 while b 10 print b a,b b,a b執行以上程式,輸出 112 358end關鍵字 關鍵字end可以用於將結果輸出到同一行,或者在輸出的末尾新增不同的字元,例...