关于1元买水2个空瓶子,3个盖子换水的问题解析

最近在看递归和迭代的一些算法题,
看网上的一些分析,尤其是代码分析类的,感觉不如自己的思路清晰,我就从数学的角度进行了一番整理,先是在纸上,后来在电脑上验算了一遍,终于搞出来了一点眉目哦!
先说下题干,1元可以买1瓶水,2个空的瓶子可以兑换一瓶水,3个盖子可以兑换1瓶水,问20元最多能喝几瓶水?
其实我们可以先分析一下,前面的几种情况,找规律哦,比如1元的时候,能喝1瓶水,留下1个空瓶子和1个盖子
2元的时候呢,其实可以理解为分两次一元进行购买,增加了1个空瓶子和1个盖子,喝水数量增加1,如果进行不停的兑换,一共下来,可以喝5瓶,最终剩下1个空瓶和2个盖子
可以到第3元的时候,相当于2元的基础上,先多喝了1瓶,多加了1个空瓶,1个盖子,进行兑换,又多喝了5瓶,一共是喝了11瓶,剩下1个空瓶和2个盖子
到了第4元的时候,相当于3元的基础上增加了1元的购买力,兑换后还是多了6瓶,依然是剩下1个空瓶和2个盖子…
这部就发现规律了嘛!从2元开始每多花1元前就比上次多喝6瓶
从数学上分析就是
f(n)=f(n-1)+6 条件是n>2

def exchangeWater(money):
    if money == 1:
        return money
    if money == 2:
        return 5
    if money > 2:
        sum = exchangeWater(money - 1) + 6
        return sum


for n in range(1, 21):
    print(f"{n}元钱可以最多喝的水是{exchangeWater(n)}")

计算20元的时候是
1元钱可以最多喝的水是1
2元钱可以最多喝的水是5
3元钱可以最多喝的水是11
4元钱可以最多喝的水是17
5元钱可以最多喝的水是23
6元钱可以最多喝的水是29
7元钱可以最多喝的水是35
8元钱可以最多喝的水是41
9元钱可以最多喝的水是47
10元钱可以最多喝的水是53
11元钱可以最多喝的水是59
12元钱可以最多喝的水是65
13元钱可以最多喝的水是71
14元钱可以最多喝的水是77
15元钱可以最多喝的水是83
16元钱可以最多喝的水是89
17元钱可以最多喝的水是95
18元钱可以最多喝的水是101
19元钱可以最多喝的水是107
20元钱可以最多喝的水是113
具体讨论的话,可以留言评论哦!

  • 14
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

金玉满堂@bj

朋友,你的打赏就是我创作的认可

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值