这是一道从别人博客里看到的趣味题:
[题目]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