2015-05-13 23 views
-2
def fibonacci(n): 
    terms = [0,1] 
    i = 2 

    for i in terms[2:n+1]: 
     terms.append(terms[i-1] + terms[i-2]) 
     return terms[n] 

user_input= input ('Write the number order by which you want to know its corresponding value in the fibonacci sequence') 
fibonacci_user_input = fibonacci(user_input) 
print fibonacci_user_input 

Pyscripter Python 2.7.9中引用的關於此程序的語義錯誤是,它返回值None。 我剛剛開始學習Python,並且現在已經發現這個程序有什麼問題了。 我已經發現如何使用while循環和遞歸來編寫斐波那契數列程序,而我只是很難使用這個過程。我的斐波那契序列程序使用「for循環」有什麼問題

+1

你在for循環中返回......這意味着無論N有多大都會在第一次迭代時返回... –

+1

解釋這個實現相對於其他實現似乎有什麼問題。 – J0e3gan

+0

提示:函數啓動時,「terms [2:n + 1]」的值是多少?你爲什麼將'terms'的當前內容用作'i'的值? – Barmar

回答

0
for i in terms[2:n+1]: 

應該是:

for i in range(2, n+1): 

你加入terms,你不想遍歷當前內容。

+0

謝謝。我的程序現在正在正確運行。有兩件事情對程序來說是錯誤的,並且從你所說的返回行不應該在for循環中,並且我正在迭代術語列表的內容,從應該在2到n範圍內發生的事情-1。 –

+0

你肯定是對'return'行。我不確定你爲什麼加1到'n',但我認爲你是對的,它應該是'n-1'。您正在調整數組索引中基於0的Python,但在計數時基於1。 – Barmar

+0

DEF斐波納契(N): 術語= [0,1] I = 2 對於i在範圍(2:N + 1): terms.append(條件[I-1] +的條件[I-2 ]) 返回的條件[N-1] USER_INPUT =輸入( '寫由要知道在Fibonacci序列及其相應的值的數目順序') fibonacci_user_input =斐波納契(USER_INPUT) 打印fibonacci_user_input - 修改的程序應使用返回項[n-1]代替返回項[n]。 –

0

此行

 terms.append(terms[i-1] + terms[i-2]) 

運行中唯一的一次循環,無論n的值有多大。