我中招了:解喝汽水问题

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

[题目]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

 

 

 

 

posted @ 2011-08-01 17:55  牛皮糖NewPtone  阅读(1499)  评论(1编辑  收藏  举报