Recursion 具有多个函数调用的递归函数的大O?
我无法确定此递归函数的最坏情况时间复杂度:Recursion 具有多个函数调用的递归函数的大O?,recursion,time-complexity,big-o,Recursion,Time Complexity,Big O,我无法确定此递归函数的最坏情况时间复杂度: long f(int n) { if(n <= 0) return 1; else { return f(n / 2) + f(n / 2) + f(n / 2); } } long f(int n){ if(n乘以一个常数不会影响复杂度。当然,执行时间大约是原来的三倍,但问题是相对于n的值,时间是如何增加的,而不是时钟说什么 请注意,这非常容易应用,因为您使用相同的值调用相同的函数;可以用 return 3 * f(n/2
long f(int n) {
if(n <= 0) return 1;
else {
return f(n / 2) + f(n / 2) + f(n / 2);
}
}
long f(int n){
if(n乘以一个常数不会影响复杂度。当然,执行时间大约是原来的三倍,但问题是相对于n的值,时间是如何增加的,而不是时钟说什么
请注意,这非常容易应用,因为您使用相同的值调用相同的函数;可以用
return 3 * f(n/2)
如果您有三个不同的电话,例如
return f(n/2) + f(int(sqrt(n)) + f(n-1)
long f(int n);
long g(int n) {
if(n <= 2) return 1;
else {
return f(n*n mod 10) + g(n-2);
}
}
long f(int n) {
if(n <= 0) return 1;
else {
return f(n / 2) + g(n / 2);
}
}
……然后你必须计算每一个的复杂性,并且只考虑最复杂的。这个函数并不难,但是,用一个更复杂的函数,比如CelATZ序列,考虑到所有的第二阶和第三阶复杂度,你会有更困难的时间。y递归函数,如
return f(n/2) + f(int(sqrt(n)) + f(n-1)
long f(int n);
long g(int n) {
if(n <= 2) return 1;
else {
return f(n*n mod 10) + g(n-2);
}
}
long f(int n) {
if(n <= 0) return 1;
else {
return f(n / 2) + g(n / 2);
}
}
长f(int n);
长g(整数n){
如果(n)