用python實現斐波那契數列的幾種方法

2021-10-02 16:36:21 字數 2104 閱讀 4907

簡介

斐波那契數列(fibonacci sequence),又稱**分割數列、因數學家列昂納多·斐波那契(leonardoda fibonacci)以兔子繁殖為例子而引入,故又稱為「兔子數列」,指的是這樣乙個數列:1、1、2、3、5、8、13、21、34

題目的起源

列昂那多·斐波那契於2023年研究兔子產崽問題時發現了此數列。設一對大兔子每月生一對小兔子,每對新生兔在出生乙個月後又下崽,假若兔子都不死亡。問:一對兔子一年能繁殖成多少對兔子?

兔子的序列

#第一種方式

>>

>

deffab

(n):

a =1 b =

1 c =

1if n <1:

return-1

while

(n-2

)>0:

c = a + b

a = b

b = c

#另一種表達方式 c, a, b = a+b, b, c

n -=

1return c

>>

>

print

(fab(8)

)21#第二種方式

>>

>

deffab

(n):

a =1 b =

1if n <1:

return-1

while

(n-1

)>0:

a,b = b ,a+b

n -=

1return a

>>

>

print

(fab(8)

)21

>>

>

deffab

(n):

if n <1:

return-1

if n==

1or n==2:

return

1else

:return fab(n-1)

+ fab(n-2)

>>

>

print

(fab(8)

)21

from _collections_abc import iterable

from _collections_abc import iterator

class

fibonacci()

:def

__init__

(self,all_num)

: self.nums = all_num

self.a =

1 self.b =

1 self.i =

0def

__iter__

(self)

:return self

def__next__

(self)

:if self.i < self.nums:

curr = self.a

self.a, self.b = self.b, self.a+self.b

self.i +=

1return curr

else

:raise stopiteration

fab = fibonacci(10)

all_nums =

list()

for n in fab:

print

(all_nums.pop())

all_nums.clear(

)>>

>

55

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

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

迴圈斐波那契數列 用Python實現斐波那契數列

斐波那契數列 fibonacci sequence 又稱 分割 數列 因 數學家萊昂 納多 斐波那契 leonardoda fibonacci 以兔子繁殖為例子而引入,故又稱為 兔子數列 最開始我一直不能理解兔子問題怎麼和斐波那契數列聯絡在一起的,然後畫了這個圖之後,就明白了。第一年有一對小兔子,一...

用Python列表實現斐波那契數列

題目 有個人想知道,一年之內一對兔子能繁殖多少對?於是就築了一道圍牆把一對兔子關在裡面。已知一對兔子每個月可以生一對小兔子,而一對兔子從出生後第3個月起每月生一對小兔子。假如一年內沒有發生死亡現象,那麼,一對兔子一年內 12個月 能繁殖成多少對?分析 兔子的規律為數列,1,1,2,3,5,8,13,...