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

你可能感兴趣的:(算法,基础,动态规划,算法)