簡體   English   中英

斐波那契數列乘法

[英]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.

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