Big o 为什么下面代码的大O符号是这样的? 问题1。
我的答案是:1+n^2*n=n^3 正确答案:O(n)Big o 为什么下面代码的大O符号是这样的? 问题1。,big-o,Big O,我的答案是:1+n^2*n=n^3 正确答案:O(n) void f(int n){ 如果(第1项) (O(n)分析方面的简化) 在这里您可以看到为什么它是O(n),因为它一直在倒计时,直到达到递归停止条件nQuestion 1的值检查是一个技巧性问题,因为for循环将在递归函数调用后立即执行return,而递归调用链是O(n)组件,而不是for循环。我明白了,感谢@DaiI喜欢这个简短的解释。 void f(int n) { if (n<1000000) ret
void f(int n){
如果(第1项)
(O(n)分析方面的简化)
在这里您可以看到为什么它是O(n)
,因为它一直在倒计时,直到达到递归停止条件nQuestion 1的值检查是一个技巧性问题,因为for
循环将在递归函数调用后立即执行return
,而递归调用链是O(n)
组件,而不是for
循环。我明白了,感谢@DaiI喜欢这个简短的解释。
void f(int n) {
if (n<1000000)
return 0;
for (int i=0; i<(n*n); i++)
return f(n-1);
}
int f(int n) {
for (int i=1; i< (n/2); i++)
for(double j =0; j <100; j+= (100.0/n)
doSomething (n/2); //doSomething(m) has time complexity of O(m)
return 0;
}
int f(n) {
if (n<1) return;
g(n-1);
}
void g(n) {
f(n/2)
doOne(); // doOne has time complexity O(1)
}
void f(int n) {
if (n<1000000)
return 0;
for (int i=0; i<(n*n); i++)
return f(n-1);
}
void f(int n) {
if (n<=0)
return 0;
return f(n-1);
}
int f(int n) {
for (int i=1; i< (n/2); i++)
for(double j =0; j <100; j+= (100.0/n)
doSomething (n/2); //doSomething(m) has time complexity of O(m)
return 0;
}
for (int i=1; i< (n/2); i++)
for (int i=1; i<n; i++)
for(double j =0; j <100; j+= (100.0/n)
for(double j =0; j <1; j+= (1.0/n) (divided by 100)
for(double j =0; j <n; j+= 1.0) (multiplied by n)
doSomething (n/2);
int f(n) {
if (n<1) return;
g(n-1);
}
void g(n) {
f(n/2)
doOne(); // doOne has time complexity O(1)
}