我中招了:解喝汽水问题

这是一道从别人博客里看到的趣味题:

[题目]1元钱一瓶汽水,喝完后两个空瓶换一瓶汽水,问:你有20元钱,最多可以喝到几瓶汽水?

 

我想当然地以为是20—>10—>5—>2—>1,漏了一瓶...

还是写个程序来解决一下:

设每次买一瓶,攒够2个空瓶就换一瓶汽水:

def qishui1( m ):
    s = 0 # 喝去的汽水瓶数
    k = 0 #空瓶数
    while m>0:
        m=m-1 #买 1瓶
        s=s+1 
        k=k+1
        while k==2:
            k=0 
            s=s+1 #换一瓶汽水,喝掉
            k=k+1 #又多出来一个空瓶
    return s,k
m = 20
s,k=qishui1(m)
print(m,"元,最多可以喝",s,"瓶汽水,手中还有",k,"个空瓶")

20 元,最多可以喝 39 瓶汽水,手中还有1个空瓶

 

考虑用递归来解:

钱数   总瓶数   空瓶数  

1元  1    1      f(1)=1

2元  3    1      f(2)=f(1)+2

3元  5    1   f(3)=f(2)+2

x元   2x-1     1   f(x)=f(x-1)+2

 

def f(x):
    if x<1:
        return 0
    elif x==1:
        return 1
    else:
        return f(x-1)+2

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值