斐波那契數(shù)列是一種數(shù)學(xué)上的數(shù)列,它的第一項(xiàng)和第二項(xiàng)都是1,從第三項(xiàng)開(kāi)始,每一項(xiàng)都是前兩項(xiàng)的和。斐波那契數(shù)列的前幾項(xiàng)如下:
1, 1, 2, 3, 5, 8, 13, 21, …
用python寫斐波那契數(shù)列有多種方法,其中一種是使用遞歸函數(shù)。遞歸函數(shù)是一種函數(shù),它在自己的函數(shù)體內(nèi)調(diào)用自己,以實(shí)現(xiàn)一種重復(fù)或分治的思想。遞歸函數(shù)通常有兩個(gè)要素:一個(gè)基準(zhǔn)情況(base case),表示遞歸的終止條件;一個(gè)遞歸情況(recursive case),表示遞歸的過(guò)程和規(guī)律。
例如,下面是一個(gè)計(jì)算斐波那契數(shù)列第n項(xiàng)的遞歸函數(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)
這個(gè)函數(shù)接受一個(gè)正整數(shù)n作為參數(shù),并返回斐波那契數(shù)列的第n項(xiàng)。它的基準(zhǔn)情況是當(dāng)n等于1或2時(shí),返回1;它的遞歸情況是當(dāng)n大于2時(shí),返回前兩項(xiàng)之和。這樣,每次調(diào)用函數(shù)時(shí),都會(huì)把問(wèn)題規(guī)??s小一點(diǎn),直到達(dá)到基準(zhǔn)情況為止。
例如,下面是調(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
這就是一個(gè)簡(jiǎn)單的斐波那契數(shù)列的遞歸函數(shù)。當(dāng)然,還有很多其他方法和優(yōu)化技巧可以用來(lái)寫斐波那契數(shù)列,比如使用循環(huán)、列表、生成器、動(dòng)態(tài)規(guī)劃等等。如果你對(duì)這些感興趣,可以?自己?寫一下?。
未經(jīng)允許不得轉(zhuǎn)載:445IT之家 » 用python寫斐波那契數(shù)列