[英]Fibonacci sequence multiplying
我試圖用以下代碼制作斐波那契數列:
def fibonacci(n): # write Fibonacci series up to n
"""Print a Fibonacci series up to n."""
a = 0
b = 1
the_list = []
while n > len(the_list):
the_list.append(a)
#By saying a = b and b = a+b we define the
#fibonacci sequence, since this is how the
#fibonacci sequence works.
a = b
b = a+b
print the_list
# Now call the function we just defined:
fibonacci(10)
據我所知,該代碼應該執行此操作,但與其給我斐波那契序列,不如給出以下輸出:
[0, 1, 2, 4, 8, 16, 32, 64, 128, 256]
所以我的斐波那契數列是乘法而不是正確地工作。 我不知道為什么,因為我想
a = b
b = a+b
應該可以解決問題,如果我看看我的while循環,這個循環的語句也是正確的,所以我只是不明白為什么我沒有得到正確的輸出。
因此,如果有人可以向我解釋為什么此代碼無法正常工作,那么它會受到高度重視。
由於邏輯缺陷,您的代碼正在創建指數序列。 根據您的代碼:
Start:
a = 0
b = 1
1st iteration:
a = b = 1
b = a + 1 = 1 + 1 = 2
2nd iteration:
a = b = 2
b = a + 2 = 2 + 2 = 4
如您所見,在執行b
計算之前設置a
會導致問題。
相反,您需要以下內容(證明這一點):
tmp = a
a = b
b = tmp + a
進行一些額外的數學運算將消除對額外變量的需要:
b += a
a = b - a
但是最簡單(也是最pythonic)的方式是:
a, b = b, a + b
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.