Related Articles
Algorithms | Analysis of Algorithms (Recurrences) | Question 8
• Difficulty Level : Medium
• Last Updated : 20 Feb, 2013

What is the time complexity of the following recursive function:

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

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

Answer: (D)

Explanation: Recursive relation for the DoSomething() is

  T(n) =  T( ) + 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)


Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.

My Personal Notes arrow_drop_up