我已经完成了计算时间复杂度的一些基本概念。我想知道后面的代码的时间复杂性。
我认为时间复杂度为O(log 3 n * n 2 )。它可能仍然是错的,我想知道确切的答案以及如何达到同样的目的。谢谢:)
function(int n){
if(n == 1) return;
for(int i = 1; i <= n; i++)
for(int j = 1; j <= n; j++)
printf("*");
function(n-3);
}
答案 0 :(得分:4)
两个带 n 次迭代的嵌套循环给出 O(n ^ 2)。递归为 O(n) -time调用函数本身,因为它减少了常量3的 n ,因此它被称为 n / 3 + 1 = O(n)次。总的来说,它是 O(n ^ 3)。
如果使用 n / 3 的值调用函数,结果中的对数常量将是。