美文网首页
使用迭代器和生成器实现斐波拉契数列

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

作者: 艾胖胖胖 | 来源:发表于2018-12-07 14:47 被阅读0次

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

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

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

相关文章

网友评论

      本文标题:使用迭代器和生成器实现斐波拉契数列

      本文链接:https://www.haomeiwen.com/subject/wehqcqtx.html