Вы должны вернуть новое значение minimum
в вашей рекурсии, иначе оно никогда не обновится:
def minCost(self, costs: List[List[int]]) -> int:
depth, cost, prev_index, minimum = 0, 0, None, 10000
def min_cost_recur(depth, cost, prev_index, n, minimum, costs):
if depth == n:
minimum = min(minimum, cost)
return minimum
original_prev_index = prev_index*1
for i in range(0, 3):
if not i == original_prev_index:
cost += costs[depth][i]
depth += 1
prev_index = i
minimum = min(minimum, min_cost_recur(depth, cost, prev_index, n, minimum, costs))
depth-=1
cost -= costs[depth][i]
prev_index = original_prev_index
return minimum
minimum = min_cost_recur(depth, cost, -1, len(costs), minimum, costs)
return minimum
Это происходит потому, что minimum
передается не по ссылке, а по значению, так как это экземпляр неизменяемого типа. Когда вы изменяли его значение внутри рекурсии, он просто создавал локальное nmae для минимума, а не изменял переменную из родительской области.