📜  算法|算法分析(重复)|问题8

📅  最后修改于: 2021-06-29 02:24:40             🧑  作者: Mango

以下递归函数的时间复杂度是多少:

int DoSomething (int n) 
{
  if (n <= 2)
    return 1;
  else  
    return (DoSomething (floor(sqrt(n))) + n);
}

(一种) \theta (n)
(B) \theta (登录)
(C) \theta (登录)
(D) \theta (登录)
(A) A
(B) B
(C) C
(D) D答案: (D)
说明: DoSomething()的递归关系为

T(n)= T(  \sqrt{n} )+ C1如果n> 2

我们已经忽略了floor()部分,因为在这里是地板还是天花板都没有关系。

Let n = 2^m,  T(n) = T(2^m)
  Let T(2^m) =  S(m)

  From the above two, T(n) = S(m)

  S(m) = S(m/2) + C1  /* This is simply binary search recursion*/
  S(m)  = O(logm)      
          = O(loglogn)  /* Since n = 2^m */
  
  Now, let us go back to the original recursive function T(n) 
  T(n)  = S(m) 
          = O(LogLogn)

这个问题的测验