使用迭代器和生成器实现斐波拉契数列

一、使用迭代器实现斐波拉契数列

class Fib(object):
    """
    迭代器生成斐波拉契数列

    :param max_value:最大范围
    :returns :所有的斐波拉契数列

    """
    def __init__(self, max_value):
        self.cur = 0
        self.next = 1
        self.max_value = max_value

    def __iter__(self):
        return self

    def __next__(self):
        if self.cur <= self.max_value:
            result = self.cur
            self.cur, self.next = self.next, self.cur+self.next
            return result
        else:
            raise StopIteration()

二、使用生成器

def Fib(max_value):
    """
    生成器生成斐波拉契数列

    :param max_value:最大范围
    :returns :所有的斐波拉契数列

    """
    cur_value = 0
    next_value = 1
    while cur_value <= max_value:
        yield cur_value
        cur_value, next_value = next_value, cur_value + next_value

使用迭代器和生成器的好处是节省内存、惰性求值

你可能感兴趣的:(使用迭代器和生成器实现斐波拉契数列)