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))