计算递归函数的时间复杂度

时间:2015-02-21 23:50:13

标签: c++ algorithm recursion time-complexity recurrence

所以我有以下代码,我无法弄清楚如何获得它的递归关系。我终于需要计算代码的时间复杂度。

int countChangeRec(int amount, array<int, 5>coins, int n)
{
    if(amount == 0)
        return 0;
    if((amount > 0 && n < 0) || (amount < 0))
        return INT_MAX;


    if(amount < coins[n-1])
        return countChangeRec(amount, coins, n-1);

    return min(countChangeRec(amount, coins, n-1), 
        amount / coins[n-1]+ countChangeRec(amount%coins[n-1], coins, n));
}

提前感谢有关如何执行此操作的任何建议。

1 个答案:

答案 0 :(得分:0)

您的代码无法解决问题。如果你想计算最小硬币数量,这里有一个打破你的解决方案的例子

coins = {1,9,10}
amount = 37

你的解决方案返回答案5,但正确的答案是4

9*3 + 1*10