首页 > 解决方案 > 如何在python生成器中运行所有斐波那契数

问题描述

所以我创建了一个函数,它本质上将一个值作为参数并运行斐波那契数列。每次我使用下一个时,它往往只打印 1 。我不确定它为什么这样做。当它到达 yield 关键字时,它返回 1 的值。到目前为止,我的代码如下:

def fibonacci(n):
    curr = 1
    prev = 0
    counter = 0
    while counter < n:
        yield curr
        prev, curr = curr, prev + curr
        counter += 1


print(next(fibonacci(10)))
print(next(fibonacci(10)))
print(next(fibonacci(10)))

标签: pythonpython-2.7generatorfibonacci

解决方案


您需要在使用之前实例化生成器的对象,例如:

g = fibonacci(10)

print(next(g))
print(next(g))
print(next(g))

将返回以下输出:

1
1
2

推荐阅读