# Understanding complexity

I was attempting this problem on leetcode where I happened to code this recursive solution with the intent of passing some cases. The complexity of the code I believe is 2^n where n is the number of offers. But the code passed all test cases. Can someone please try explaining how is this possible?

``````
p = min(p,minCost(price,special,newNeed, index+1, currCost+special[index][special[index].size()-1]));
// using the same offer again
p = min(p,minCost(price,special,newNeed, index, currCost+special[index][special[index].size()-1]));
``````

Wont it simply over-write p’s value with new value? Whats the use of previous computations then, if they will just get over-written in the end?

Yes, it seems to be O(2^n) to me too. I can think that somewhere cause of ‘there can be atmost 6 items and 100 special offers’ the code slipped in. The test cases must be weak, nothing else explains this code passing.

Is it the full code? I think the main function is missing

On leetcode, we need to just fill in the function shoppingOffers() (given as per the arguments passed). minCost() is created by me.

Oh, i get it then! Thanks.