python中的无限斐波那契生成器,具有收益错误?

时间:2018-07-01 05:35:41

标签: python python-3.x

def fib_gen():
    a, b = 0, 1
    while True:
        yield a
        a, b = b, a + b

print(next(fib_gen())) 
print(next(fib_gen())) 
print(next(fib_gen())) 
print(next(fib_gen()))

Output: 0 
        0 
        0 
        0

我正在尝试在python中创建无限斐波那契生成器。请帮助...我在哪里做错了?

2 个答案:

答案 0 :(得分:7)

每次调用fib_gen()都会创建一个处于初始状态的新生成器。尝试将fib_gen()的返回值分配给一个变量,并在同一变量上调用next()

答案 1 :(得分:5)

您首先需要创建一个生成器对象:

def fib_gen():
    a, b = 0, 1
    while True:
        yield a
        a, b = b, a + b


generator = fib_gen()

print(next(generator))
print(next(generator))
print(next(generator))
print(next(generator))

输出为:

0
1
1
2