[英]Time complexity of a recursive algorithm with nested iterative function?
一个)
void f(n){
if(n<=1) return;
else{
g(n); //g(n) is O(N^2).
f(n/2);
f(n/2);
}
}
b)
void f(n){
if(n<=1) return;
else{
g(n); //g(n) is O(N).
f(n-1);
f(n-1);
}
}
C)
void f(n){
if(n<=1) return;
else{
g(n); //g(n) is O(N^2).
f(n-1);
f(n-1);
}
}
如何计算上述两个代码段的O(n)复杂度?
a)我得到了答案O(n ^ 2),因为每个f(n)递归地调用自己两次。 并且由于树的深度是LogN(n / 2),总体复杂度是O(n ^ 2),我是否忽略g(n)方法,因为它也是N ^ 2?
b)由于树的深度是N,并且每个f(n)递归地称自己两次。 并且由于每个级别需要执行N次操作g(n),我得到了答案O(N.2 ^(N))。
c)与b)相同但是g(n)在N ^ 2时间内进行 - 因此O(N ^ 2.2 ^(N))。
它是否正确?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.