我想将此函数更改为具有相同参数的递归函数。 原始代码将给定的更改(此处为3,99为399)转换为用于获取此金额的硬币元组列表。
def make_change(amount):
M=[200,100,50,20,10,5,2,1]
W=[]
for i in range (len(M)):
m=0
if amount>=(2*M[i]):
amount=amount-(2*M[i])
m+=2
W.append((M[i],m))
if amount>=M[i]:
amount=amount-M[i]
m+=1
W.append((M[i],m))
return W
print make_change(238)
答案 0 :(得分:0)
这是否符合您的要求?
def make_change(amount):
def sub(amount, coins):
if coins:
coin = coins[0]
nb_coins = amount / coin
if nb_coins:
return [(coin, nb_coins)] + sub(amount-coin*nb_coins, coins[1:])
else:
return sub(amount-coin*nb_coins, coins[1:])
else:
return []
return sub(amount, [200,100,50,20,10,5,2,1])
测试:
>>> print make_change(238)
[(200, 1), (20, 1), (10, 1), (5, 1), (2, 1), (1, 1)]