Сложность рекурсивного алгоритма

У меня есть рекурсивный алгоритм, такой как:

int alg(int n) {
if (n == 0)
return 2;
for (int i = 0; i<= n-1; ++i)
alg(i);
}

Очевидно, что n == 0 дело Θ(1), Однако у меня возникают проблемы с пониманием, как это действительно работает. Я имею в виду, что это должно быть что-то вроде:

T(n) = T(0) + T(1) + ... + T(n-1).

И тогда мы должны дать T(1), T(2), .., T(n-1) = xT(0), Я могу понять, как это происходит для n = 0 и n = 1, но для больших n это идет не так.

0

Решение

Вы можете наблюдать это:

T(n)     = T(0) + T(1) + ... + T(n-2) + T(n-1)
T(n - 1) = T(0) + T(1) + ... + T(n-2)

Следовательно

T(n)     = 2 * T(n-1)

На данный момент, мы можем сделать вывод, что сложность составляет O (2N). На самом деле, это Θ (2N).

15

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector