def change(amount, coins):
if not coins:
return float('inf')
if amount == 0:
return 0
if coins[0] > amount:
return change(amount, coins[1:])
else:
handy = 1 + change(amount - coins[0], coins)
handy2 = change(amount, coins[1:])
return min(handy, handy2)
print(change(5, [1, 2, 3]))
这是解决以下问题的解决方案:找到可以总计达到一定数量的最小硬币数量。 (例如,change(313, [7, 24, 42]) == 10
中1(7) + 4(24) + 5(42)
等于313
)
我不知道哪个变量(handy
或handy2
)将“使用”和“丢失”。有人告诉我,所有分支都在上次递归调用之后从底部累加,但是我仍然对那是什么感到困惑。