簡體   English   中英

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

[英]Fast doubling Fibonacci Python generator sequence

我在嘗試使用以下方法創建快速加倍斐波那契 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  
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=' ')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM