快捷搜索: 王者荣耀 脱发

关于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 具体讨论的话,可以留言评论哦!

经验分享 程序员 微信小程序 职场和发展