python - 快速加倍斐波那契 Python 生成器序列

标签 python fibonacci

我在尝试使用以下代码创建快速加倍斐波那契 python 生成器时遇到了麻烦。

给定 F(k) 和 F(k+1),我们可以计算这些:

F(2k) = F(k)[2F(k + 1) − F(k)]
F(2k+1) = F(k+1)^2 + F(k)^2

我有以下最简单(慢)斐波那契生成器:

def fib_generator():
    n = 1
    n0 = 1
    while True:
        yield n
        n, n0 = n + n0, n

最佳答案

实现可以是:

from itertools import count

def fast_fib_generator():
    F = [1, 1]
    yield 1
    yield 1
    for k in count(1):
        F.append(F[k] ** 2 + F[k - 1] ** 2)
        yield F[-1]

        F.append(F[k] * (2 * F[k + 1] - F[k]))
        yield F[-1]


for x in fast_fib_generator():
    print x

第一个结果:

1
1
2
3
5
8
13
21
34  

关于python - 快速加倍斐波那契 Python 生成器序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29955541/

相关文章:

javascript - for i in bin(n)[3 :]: in Javascript? 等价于什么

c - 请帮助解释这个域正在做什么(使用函数在数组中添加斐波那契序列元素的程序)

python - 混合 Web 应用程序中的 RESTful 身份验证

Python 3 : Pickling and UnPickling class instances returning "no persistent load" error

python - 由于运行时错误,一个测试用例失败

java - 图表需要多大才能触发斐波那契堆的最坏情况复杂性?

python用语言环境设置自己的货币

python - 如何比较 strftime 值

python - 如何使用 python 多处理返回一个值?

c++ - 在 n 处计算六次独立运行的斐波那契数的最大和最小时间