MCQ Practice

What is the time complexity of the following recursive implementation? #include #include int max_of_two(int a, int b) { if(a > b) return a; return b; } int rod_cut(int *prices, int len) { int max_price = INT_MIN; // INT_MIN is the min value an integer can take int i; if(len <= 0 ) return 0; for(i = 0; i < len; i++) // subtract 1 because index starts from 0 max_price = max_of_two(max_price, prices[i] + rod_cut(prices,len - i - 1)); return max_price; } int main() { int prices[]={2, 5, 6, 9, 9, 17, 17, 18, 20, 22},len_of_rod = 10; int ans = rod_cut(prices, len_of_rod); printf("%d",ans); return 0; }

A

O(n)

B

O(n 2 )

C

O(n 3 )

D

O(2 n )

Correct Answer: D