2015-04-01 4 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

необходимо передать аргумент типа в ваши рекурсивные вызовы, то есть 'memo [n] = sequence (type, n-1) + sequence (type, n-2)' – Matt

+2

В качестве примечания стороны не следует использовать 'type' как имя переменной, так как уже существует такое имя – inspectorG4dget

+1

' if n not in memo: 'также должно сделать вещи лучше – Pynchia

ответ

2

Попробуйте это:

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

Ошибка явно, функция sequence ожидает два параметра, но вы передаете только один. В качестве примечания следует удалить else и убедиться, что в конце выполнено return memo[n] - потому что ваша функция должна всегда вернуть значение, иначе рекурсия не будет работать.

Смежные вопросы