Skip to content
Related Articles
Open in App
Not now

Related Articles

Algorithms | Analysis of Algorithms (Recurrences) | Question 8

Improve Article
Save Article
  • Difficulty Level : Medium
  • Last Updated : 28 Jun, 2021
Improve Article
Save Article

What is the time complexity of the following recursive function:

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

(A) \theta(n)
(B) \theta(nlogn)
(C) \theta(logn)
(D) \theta(loglogn)
(A) A
(B) B
(C) C
(D) D

Answer: (D)

Explanation: Recursive relation for the DoSomething() is

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

We have ignored the floor() part as it doesn’t matter here if it’s a floor or ceiling.

  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)

Quiz of this Question

My Personal Notes arrow_drop_up
Related Articles

Start Your Coding Journey Now!