迭代器实现
class Feibo():
def __init__(self, n):
self.n = n
self.i = 1
self.j = 1
self.index = 0
def __iter__(self):
return self
def __next__(self):
if self.index < self.n:
k = self.i
self.i, self.j = self.j, self.j + self.i
self.index += 1
return k
else:
raise StopIteration
f = Feibo(5)
print(tuple(f))
生成器实现
def feibo(n):
i, j = 1, 1
for x in range(n):
i, j = j, i + j
yield i
print(list(feibo(5)))
递归实现
def fun(i):
if i == 0:
return 0
elif i == 1:
return 1
else:
return fun(i - 2) + fun(i - 1)
if __name__ == '__main__':
for i in range(10):
print(fun(i), end=" ")