斐波那契數(shù)列是一種數(shù)學上的數(shù)列,它的第一項和第二項都是1,從第三項開始,每一項都是前兩項的和。斐波那契數(shù)列的前幾項如下:
1, 1, 2, 3, 5, 8, 13, 21, …
用python寫斐波那契數(shù)列有多種方法,其中一種是使用遞歸函數(shù)。遞歸函數(shù)是一種函數(shù),它在自己的函數(shù)體內(nèi)調(diào)用自己,以實現(xiàn)一種重復或分治的思想。遞歸函數(shù)通常有兩個要素:一個基準情況(base case),表示遞歸的終止條件;一個遞歸情況(recursive case),表示遞歸的過程和規(guī)律。
例如,下面是一個計算斐波那契數(shù)列第n項的遞歸函數(shù):
def fibonacci(n):
# function body
if n == 1 or n == 2: # base case: if n is 1 or 2, return 1
return 1
else: # recursive case: if n is larger than 2, return the sum of the previous two terms
return fibonacci(n-1) + fibonacci(n-2)
這個函數(shù)接受一個正整數(shù)n作為參數(shù),并返回斐波那契數(shù)列的第n項。它的基準情況是當n等于1或2時,返回1;它的遞歸情況是當n大于2時,返回前兩項之和。這樣,每次調(diào)用函數(shù)時,都會把問題規(guī)??s小一點,直到達到基準情況為止。
例如,下面是調(diào)用上面定義好的fibonacci函數(shù),并打印出結(jié)果:
x = 10 # define a variable x with value 10
y = fibonacci(x) # call the fibonacci function with x as argument and assign the result to y
print(y) # print out y which is 55
這就是一個簡單的斐波那契數(shù)列的遞歸函數(shù)。當然,還有很多其他方法和優(yōu)化技巧可以用來寫斐波那契數(shù)列,比如使用循環(huán)、列表、生成器、動態(tài)規(guī)劃等等。如果你對這些感興趣,可以?自己?寫一下?。
未經(jīng)允許不得轉(zhuǎn)載:445IT之家 » 用python寫斐波那契數(shù)列