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儲存數列中後乙個數,...