Привет Я новичок в Python и пытается реализовать рекурсивную функцию, которая заполняет таблицу, но при работе с программой, я получаю следующее исключениеРекурсивный Условный оператор питон
неподдерживаемый тип операнда (ов) для +: 'NoneType' и 'int'.
def cost(i, j):
if table[i][j] == None:
v1 = v2 = v3 = v4 = None
if i > 0 and j > 0:
print "case1"
v1 = cost(i-1, j-1) + getSubCostMatrixValue(options[string1[i]], options[string2[j]])
if i > 0 and j >= 0:
print "case2"
v2 = cost(i-1, j) + gapCost
if i >= 0 and j > 0:
print "case3"
v3 = cost(i, j-1) + gapCost
if i == 0 and j == 0:
print "case4"
v4 = 0
print "Max:"
print max(v1,v2,v3,v4)
table[i][j] = max(v1,v2,v3,v4)
return table[i][j]
проблема ocours я случай 2 и корпус 3, как если рекурсивный вызов не может каким-то образом, но я не могу выяснить, почему. Я чувствую, что это что-то очевидное
таблица заполнена ничем с начала, gabCost - это int, getSubCostMatrixValue также возвращает int.
исправить свой отступ и что такое «gapCost»? как написано 'max()'? – depperm
Вы не * возвращаете * ничего в любом из своих филиалов. Как 'return v1' ...' return v2' и т. Д. –
Правильный тест для 'None':' if table [i] [j] is None: '. Это связано с тем, что '==' может привести к неожиданным оценкам нуля или False. Я сомневаюсь, что это причина вашей проблемы. – cdarke