【问题标题】:python3: Fibonacci generator not working as expectedpython3:斐波那契生成器未按预期工作
【发布时间】:2020-02-03 10:08:56
【问题描述】:

我知道与this 相比,以下是斐波那契生成器的次优实现,但我似乎无法理解为什么它不能按预期工作:


def fibonacci_sequence():
    fl, fp = 1, 1
    while True:
        yield (fl + fp)
        store = fl + fp
        fp = fl
        fl = store


for i in range(10):
    print(next(fibonacci_sequence()))

它一直打印 2。

生成器的状态不是在每次迭代时在 yield 关键字下更新吗?

【问题讨论】:

    标签: python-3.x fibonacci


    【解决方案1】:

    您在每次循环迭代中实例化一个 new 生成器。改为:

    fib = fibonacci_sequence()
    
    for i in range(10):
        print(next(fib))  # keep calling next on the same generator object
    

    要从头开始生成整个序列,您可能需要yield fp 而不是yield (fl + fp)

    【讨论】:

      猜你喜欢
      • 2011-04-26
      • 1970-01-01
      • 1970-01-01
      • 2011-12-18
      • 2015-04-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多