斐波那契数列实现
方法一:普通方法
def fib(n):
a=0
b=1
for i in xrange(n):
a,b = b,a+b
return a
方法2:迭代器
class Fibs:
def __init__(self):
self.a=0
self.b=1
def next(self):
self.a,self.b=self.b,self.a+self.b
return self.a
def __iter__(self):
return self
fibs=Fibs()
fib_list = []
for fib in fibs:
fib_list.append(fib)
if fib > 1000:
break
print fib_list
>>>
[1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597]
方法3:生成器
def fibs():
a,b=0,1
while True:
a,b=b,a+b
yield a
fib_list = []
num=1000
for fib in fibs():
fib_list.append(fib)
if fib>num:break
print fib_list
>>>
[1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597]