Предположим, сложность вашего рекурсивного алгоритма составляет h(A,B)
.
Из вашего кода вы можете разделить h
на 2 случая:
h(A,B) = { complexity-of-if-branch if A = B
{ complexity-of-rest-of-the-code otherwise
«Сложность ветки» тривиальна. Для «сложности остальной части кода», поскольку она включает recurringalgorithm
, вам нужно будет снова включить h
.
Например, если функция определена как
function hh(A,B) {
for (var i = A+1; i < B; ++ i)
hh(i, B);
}
Тогда сложность будет
hh(A,B) = hh(A+1, B) + hh(A+2, B) + ... + hh(B-1, B)
Вы можете сравнить это с вашим кодом для обобщения.
(Кстати, сложность h(A,B) = O(B * (B-A)!)
)