簡體   English   中英

帶生成器的斐波那契

[英]Fibonacci with Generators

我正在嘗試使用生成器進行斐波那契繼承,但我的代碼返回 2**a...

def fibonacci():
    a, b = 0, 1
    while True:
        yield a
        a = b
        b = a + b
n = int(input("How long? "))
fib = fibonacci()

for i in range(n):
    print(next(fib))

您的問題是,當您分配b = a + b時,您已經將a的值更新為b的舊值。 因此,您實際上是在分配b = b + b2*b ,這就是您得到0, 1, 2, 4, 8, ...結果的原因。 您可以通過同時分配ab來解決這個問題:

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

fib=fibonacci()

for i in range(10):
    print(next(fib))

輸出:

0
1
1
2
3
5
8
13
21
34

暫無
暫無

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

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