斐波那契的幾種實現方式

2021-09-24 20:34:59 字數 1412 閱讀 8235

1.迭代器實現

迭代器生成

class f():

def __init__(self,all_num):

self.num = 0 # 計數,記錄取值的次數,如果次數超過,就拋異常

self.all_num = all_num # 要取值的個數

self.a = 1

self.b = 1

def __iter__(self):

return self

def __next__(self): # 每次取值是呼叫__next__函式

if self.all_num <= 2:

self.num += 1

if self.num > 2: # 當取值太多時丟擲異常

raise stopiteration

return self.a

else:

self.num+=1

if self.num <=self.all_num:

ret = self.a

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

return ret

else:

raise stopiteration

f = f(5)

for i in f:

print(i)

2.生成器實現

# 生成器

def fb(n):

a, b = 0, 1

while n>0: # 當次數大於0時工作

a,b = b,a+b

yield a

n-=1

for i in fb(5): # 返回的是乙個可迭代的物件

print(i)

3.遞迴實現

#遞迴實現

def fb(n):

if n <= 1:

return n

else:

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

for i in range(1,6):

print(fb(i))

4.遞推實現

# 遞推方式

def fb(n):

a,b = 0, 1

for i in range(n+1): # 第乙個需要迴圈一次得到結果,第二個數需要計算兩次。。。。。

a,b = b, a+b

return a

for n in range(5): # n 從0 開始 所以上面的n 需要加一

print(fb(n))

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

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

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

定義 遞迴 includeusing namespace std int f int x int main coutconst int n 1100 int a n int f int x int main for int i 0 i 2 i for int j 0 j 2 j for int k ...

實現斐波那契數列

方法 一 通過迭代器實現 class fibiterator object def init self,n self.n n 是使用current儲存當前數列中第幾個數 self.current 0 使用num1儲存數列中前乙個數,初始值為0 self.num1 0 使用num2儲存數列中後乙個數,...