Ваша реализация тратит все больше и больше времени каждый раз, когда вы вызываете __next__
. вместо этого следует использовать итерационный метод с постоянной сложностью итерации по нему:
class Fibonacci:
def __init__(self, max = 0):
self.max = max
self.a = 0
self.b = 1
def __iter__(self):
self.a = 0
self.b = 1
return self
def __next__(self):
self.a, self.b = self.b, self.a + self.b
if self.a <= self.max: # if n is less that 0
return self.a
else:
raise StopIteration