Я пытаюсь реализовать алгоритм с временной сложностью в Big-Theta (n^m), n и m - натуральные числа.Big-Theta (n^m) recursive
Мой первый раствор:
algo(n,m,i){ // called with algo(n,m,1)
if (i < m){
algo(n,m,i+1)
}
for i = 1 to n{
print(do something in constant time);
}
}
Мой второй раствор:
algo(n,m,i){ //called with algo(n,m,m)
if (i > 0){
for j = 1 to n{
algo(n,m,i-1)
}
}else{
print(do something in constant time);
}
}
Когда я анализирую мое второе решение, называется algo(n,m,m)
, я получаю T(i) = n * T(i-1), i > 0
. С T (0) = постоянное время я получаю T(i) = n^m
. Поэтому я считаю, что мое второе решение правильно, но я не знаю, что не так с моим первым решением.
Не является ли термин для первого алгоритма T (i) = n + T (i-1)? – Elternhaus
@ Elternhaus Упс, ты прав. Простите за это. – gongzhitaao