Этот вопрос относится к ударному коду:
cost = [[1, 10, 75, 92],
[-1, 0, 35, 50],
[-1, -1, 0, 80],
[-1, -1, -1, 0]]
def min_cost(source, destination):
if s==d or s == d-1:
return cost[s][d]
mc = cost[s][d]
for i in range(s+1, d):
tmp = min_cost(s, i) + min_cost(i, d)
if tmp < mc:
mc = tmp
return mc
Когда я сделал сухой ход, я увидел, что min_cost (1,3) получает исполнение 2 раза. Я прочитал в одной книге, где автор упомянул, если бы у нас было 10 станций между ними, тогда min_cost (1, 3) будет работать 144 раза.
Как мы можем вычислить эти цифры без фактического прогона. Я знаю, используя уравнения рекурсии, мы можем определить время, затраченное функцией, но как сказать, что определенная функция будет выполняться много раз?