快速倍频斐波那契Python生成器序列

快速倍频斐波那契Python生成器序列,python,fibonacci,Python,Fibonacci,我在尝试创建一个快速倍增的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

我在尝试创建一个快速倍增的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  
试试这个


你到底想要什么?无论是生成所有斐波那契数还是生成一些快速增长的子序列对我来说都没有意义。前者最好用你已经拥有的简单的一个来完成,而后者缺少很多。那么重点是什么呢?OP要求提供一个快速加倍的斐波那契序列,您发布的是一个普通的斐波那契序列递归函数,请再次阅读问题。
def fibonacci(number):
    numbers = [0, 1]
    while len(numbers) < number:
        numbers[len(numbers):len(numbers)] = [numbers[len(numbers)-2] + numbers[len(numbers)-1]]
    return numbers
def fib_gen(number):
    for iter in fibonacci(number):
        print iter
num=int(input("Enter length of series required"))
fiblist=[]
for i in range(num):
    if i==0 or i==1:
        fiblist.append(i)
    else:
        temp=fiblist[i-2]+fiblist[i-1]
        fiblist.append(temp)
print(*fiblist,sep=' ')