python换零钱_python递归做1元钱换零钱

给定足够的 5角,2角,1角,5分,2分,1分这六种零钱,将1元(100)换成零钱,一共有多少种换法?

def split(n,j):

v=[50,20,10,5,2,1]

if n<0:

return 0

if n==0:

return 1

if j<0:

return 0

return split(n,j-1)+split(n-v[j],j)

执行:

>>> split(100,5)

4562

>>>

可以看到具体方案的方法:

def split(n,j,result):

v=[50,20,10,5,2,1]

if n<0:

return 0

if n==0:

print "方案:"+result

return 1

if j<0:

return 0

return split(n,j-1,result)+split(n-v[j],j,result+str(v[j])+"|")

执行(以1角为例):

>>> split(10,5,"")

方案:10|

方案:5|5|

方案:2|2|2|2|2|

方案:1|2|2|5|

方案:1|1|2|2|2|2|

方案:1|1|1|2|5|

方案:1|1|1|1|2|2|2|

方案:1|1|1|1|1|5|

方案:1|1|1|1|1|1|2|2|

方案:1|1|1|1|1|1|1|1|2|

方案:1|1|1|1|1|1|1|1|1|1|

11

>>>

over

2

0

分享到:

18e900b8666ce6f233d25ec02f95ee59.png

72dd548719f0ace4d5f9bca64e1d7715.png

2009-09-03 14:31

浏览 3663

评论

1 楼

wenxiang_tune

2009-09-04

38687d1a1ad71d37c86f287056834d1a.gif

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值