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)