如何在python生成器中遍历所有斐波那契数

时间:2019-01-23 15:22:41

标签: python python-2.7 generator fibonacci

所以我创建了一个函数,该函数本质上将一个值作为参数并运行斐波那契数列。每次我使用next时,它往往只打印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)))

2 个答案:

答案 0 :(得分:1)

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

g = fibonacci(10)

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

将返回以下输出:

1
1
2

答案 1 :(得分:0)

这是一种对我有用的解决方案:

def fibonacci(n):
    fibonacci_list = []
    curr = 1
    prev = 0
    counter = 0
    while counter < n:
        prev, curr = curr, prev + curr
        counter += 1
        fibonacci_list.append(curr)

    return fibonacci_list;


x = fibonacci(10)
print(x)

告诉我是否有帮助

SLP