Algorithms | Analysis of Algorithms (Recurrences) | Question 8
What is the time complexity of the following recursive function:
c
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)D
(D)C
Answer: (C)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)
Quiz of this QuestionPlease comment below if you find anything wrong in the above post
Last Updated :
28 Jun, 2021
Like Article
Save Article
Share your thoughts in the comments
Please Login to comment...