class Fibonacci(object): def __init__(self, n):
self.n = n
self.a = 0
self.b = 1
self.current_num = 0
def __next__(self): if self.current_num < self.n:
num = self.a
self.a, self.b = self.b, self.a + self.b
self.current_num += 1 return num else: raise StopIteration
def __iter__(self): return self
fib = Fibonacci(10) for temp in fib:
print(temp)
现在我们来探讨下,除了上述方法的其他实现方法:
实现方法一:根据斐波那契数列的特性,我们可以用最简单的循环遍历以及变量的值交换的方法实现,代码如下: def fibonacci(num):
a, b, i = 0, 1, 0 while i < num:
print(a)
a, b = b, a+b
i += 1
fibonacci(10)
实现方法二:考虑到从第三项开始,每一项的值都为前面两项的和,可以使用递归的方法来计算: def fibonacci(n): if n < 2: return n else: return fibonacci(n-1) + fibonacci(n-2)
for i in range(10):
print(fibonacci(i))
实现方法三:生成器实现。生成器是一种特殊的迭代器,前面说到迭代器的实现方法,那么我们也可以用生成器来实现,而且生成器比迭代器代码更加简洁: def fibonacci(n):
i = 0
a, b = 0, 1 while i < n: yield a
a, b = b, a + b
i += 1