主要逻辑都在注释里面实现了
用到了递归的方法
def recMC(coinValueList,change):
minCoins = change #先试着全部用面值为1的硬币
if change in coinValueList: #如果在硬币面值里有刚好等于价格的硬币,那么可以只用这一个来完成交易
return 1
else:
for i in [c for c in coinValueList if c <= change]: #将所需要的所有硬币都试一遍
numCoins = 1 + recMC(coinValueList,change-i) #每尝试了一个可以使用的面值,加一
if numCoins < minCoins: #如果发现比原来所花的硬币还少了,就更新最少的硬币值
minCoins = numCoins
return minCoins
print(recMC([1,5,10,25],63))