[英]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 + b
或2*b
,這就是您得到0, 1, 2, 4, 8, ...
結果的原因。 您可以通過同時分配a
和b
來解決這個問題:
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.