python函数可以递归调用吗_递归调用函数

我有10张,20张,50张钞票,当我需要支付任何金额时,我需要找到最好的组合。例如,当我需要付7英镑时,我会付5英镑和2英镑的钞票

我有一个函数可以计算这个。但我需要运行同一个函数3到4次,如下所示。如何递归调用函数?在my_dir={}

import bisect

def my_change(my_amount):

c=[1,2,5,10,20,50,100,500]

my_pos=bisect.bisect(c, my_amount)

my_val=c[my_pos-1]

my_num=my_amount//my_val

my_recurr=my_amount-(my_num*c[my_pos-1])

my_dir[my_val] = my_num

return my_recurr

有没有更好的计算方法?在

^{pr2}$

更新:

根据可用的情况,组合可能会改变!在

^{3}$

应导致:actual_pay={1:1, 2: 3, 10: 1, 50:6, 100: 1}

更新:

有没有更好的编码方法?在amt=417

my_dict={}

available_cash={1:20, 2:10, 10:100, 50:100, 100:1, 500:1}

new_list=sorted(available_cash, reverse=True)

for key in new_list:

if amt >= key * available_cash[key]:

my_dict[key] = available_cash[key]

amt = amt - (key * available_cash[key])

else:

if amt >= key:

notes = amt // key

amt = amt - (key * notes)

my_dict[key] = notes

更新1:

如果我需要在付款后找到自动取款机里的钞票,我可以用柜台from collections import Counter

A = Counter(available_cash)

B = Counter(my_dict)

A - B

Counter({10: 99, 50: 94, 1: 19, 2: 7, 500: 1})

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值