python3:斐波那契发生器未按预期工作

问题描述 投票:0回答:1

[我知道,与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个回答
3
投票
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)

© www.soinside.com 2019 - 2024. All rights reserved.