Oh-Notation中以下函数的时间复杂度是多少?
void fun(int n)
{
if (n <= 1)
return;
fun(n − 1);
for (int i = 0; i < n; i++)
cout << " * ";
}
我认为它是O(n),但我可能错了
答案 0 :(得分:0)
它是O(n^2)
,因为增加n会导致增加for
次调用的次数,以及每个for
循环所需的时间 - 完成
两个变化均线性上升,产生公式O(n) * O(n) = O(n^2)
。
答案 1 :(得分:0)
没有递归就是O(n)
。
考虑这个调用堆栈的乐趣(3):
fun(3):
fun(2):
fun(1):
return;
cout " * * "
cout " * * * "