pka*_*mol 0 fibonacci python-3.x
我知道下面是一个不理想的实现相比,斐波那契数发生器的这个,但我似乎无法理解为什么它不按预期工作:
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()))
Run Code Online (Sandbox Code Playgroud)
它始终保持打印2。
生成器的状态不是yield在每次迭代的关键字下面更新吗?
您将在每个循环迭代中实例化一个新的生成器。改为:
fib = fibonacci_sequence()
for i in range(10):
print(next(fib)) # keep calling next on the same generator object
Run Code Online (Sandbox Code Playgroud)
要从头开始生成整个序列,您可能需要yield fp而不是yield (fl + fp)。