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

  • Post author:
  • Post category:其他


最近在看递归和迭代的一些算法题,

看网上的一些分析,尤其是代码分析类的,感觉不如自己的思路清晰,我就从数学的角度进行了一番整理,先是在纸上,后来在电脑上验算了一遍,终于搞出来了一点眉目哦!

先说下题干,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

具体讨论的话,可以留言评论哦!



版权声明:本文为tunln5288原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。