2015-04-01 240 views
0
TypeError: sequence() missing 1 required positional argument: 'n', sequence() 

顯然,當使用sequence(n-1) + sequence(n-2)時,n沒有使用該函數的值,我該如何解決它?缺少1個需要的位置參數 - Python

memo = {0:0,1:1} 
def sequence(type, n): 
if type == "fibonacci": 
    if not n in memo: 
     memo[n] = sequence(n-1) + sequence(n-2) 
    else: 
     return memo[n] 
+2

您需要將類型參數傳入您的遞歸調用,即'備忘錄[n] =序列(類型,n-1)+序列(類型,n-2)' – Matt 2015-04-01 16:52:14

+2

作爲一個附註,不要使用'type'作爲變量名稱,因爲已經有一個內置的名稱 – inspectorG4dget 2015-04-01 16:53:44

+1

'如果n不在備忘錄中:'也應該讓事情更好 – Pynchia 2015-04-01 16:55:01

回答

2

試試這個:

sequence(type, n-1) + sequence(type, n-2) 

的錯誤是明確的,功能sequence期待兩個參數,但你傳遞唯一的一個。作爲一個方面說明,你應該刪除else,並確保return memo[n]在最後執行 - 因爲你的函數必須總是返回一個值,否則遞歸將不起作用。

相關問題