C++ 时间复杂度,用 for 循环表示递归函数的 Oh 表示法
C++ Time complexity in Oh notation of recursive function with for loop
以下 Oh-Notation 函数的时间复杂度是多少?
void fun(int n)
{
if (n <= 1)
return;
fun(n − 1);
for (int i = 0; i < n; i++)
cout << " * ";
}
我假设它是 O(n),但我可能错了
它是 O(n^2)
,因为增加 n 会增加 for
调用的次数,以及每个 for
循环完成所需的时间。
两个变化呈线性上升,得到公式 O(n) * O(n) = O(n^2)
。
没有递归会是O(n)
。
考虑 fun(3) 的调用堆栈:
fun(3):
fun(2):
fun(1):
return;
cout " * * "
cout " * * * "
以下 Oh-Notation 函数的时间复杂度是多少?
void fun(int n)
{
if (n <= 1)
return;
fun(n − 1);
for (int i = 0; i < n; i++)
cout << " * ";
}
我假设它是 O(n),但我可能错了
它是 O(n^2)
,因为增加 n 会增加 for
调用的次数,以及每个 for
循环完成所需的时间。
两个变化呈线性上升,得到公式 O(n) * O(n) = O(n^2)
。
没有递归会是O(n)
。
考虑 fun(3) 的调用堆栈:
fun(3):
fun(2):
fun(1):
return;
cout " * * "
cout " * * * "