Не зная больше о вашем коде, я не могу действительно предложить подробное решение.Тем не менее, одна часть вашего алгоритма действительно запомнилась: compute_solution(j - 1)
.Поскольку j
является целым числом, повторный вызов алгоритма с помощью j - 1
соответствует циклу лучше, чем вызов метода, тем более что в Python они, как правило, несколько дороги.Итак, я бы изменил ваш алгоритм следующим образом:
solution_set = []
def compute_solution(j):
while (j > 0):
if sorted_operations[j]['weight'] + OPT[p_list[j]] > OPT[j - 1]:
solution_set.append(sorted_operations[j])
print(j)
compute_solution(p_list[j])
return
else:
j = j - 1
compute_solution(len(sorted_operations) - 1)
В зависимости от того, как часто выполняется этот оператор else
, это может быть основным преимуществом.