Python3 フィボナッチ数列の色々2(イテレータ)

Python3 フィボナッチ数列の色々(再帰・yield) の続き。

[amazonjs asin="B00XZTYMG6″ locale="JP" title="Pythonプロフェッショナルプログラミング 第2版"]

イテレータでフィボナッチ数列

イテレータを使ってフィボナッチ数列を出力してみた。

[python title="イテレータでフィボナッチ数列"]
# -*- coding: utf-8 -*-

class Fib(object):

def __init__(self, max):
self.max = max

def __iter__(self):
self.a = 1
self.b = 1

return self

def __next__(self):

fib = self.a
if fib > self.max:
raise StopIteration

self.a, self.b = self.b, self.a + self.b

return fib

if __name__ == '__main__’:

fib = Fib(1000)
for x in fib:
print(x)

[/python]