【多思路解决喝汽水问题】1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以喝多少汽水

题目内容

喝汽水问题

喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以喝多少汽水(编程实现)。

题目分析

数学思路分析

根据给出的问题和引用内容,我们可以得出答案。

首先,我们用20元购买了20瓶汽水,现在有20个空瓶。

接下来,我们将这20个空瓶兑换成新的10瓶汽水

然后,将这10个空瓶再次兑换成新的5瓶汽水,此时还剩下一个空瓶。

我们将这个剩余的空瓶与后面的空瓶结合兑换,得到1瓶新的汽水

因此,到目前为止,我们总共获得了20+10+5+2+1+1=39瓶汽水。

所以,给了20元我们可以喝到39瓶汽水。

编程思路分析

思路一 循环实现

total = 20;  //汽水总数
    int k = 0;     //空瓶数
    int s = 0 ;     //剩余空瓶

第一次(k=20)。

第二次(k=20/2=10,s=20%2=0),此时total又增加10了;

第三次(k=10/2=5,s=10%2=0);

第四次(k=5/2=2, s=5%2=1,);

第五次(k=2/2=1,s=2%2=0);

(s=1)。

#include<stdio.h>
#include<stdlib.h>
int main()
{
    int total = 20;  //汽水总数
    int k = 0;     //空瓶数
    int s = 0 ;     //剩余空瓶
       k = 20;
    while(k>=1)
    {
        k= k+s;
        total = total+k/2;//原有的汽水数+换来的汽水数
        s = k%2;
        k=k/2;//两个空瓶子换1个新汽水,汽水喝完就是1个瓶子
    }
    printf("%d\n",total);
    system("pause");
    return 0;
}

思路二 递归实现

第一次和第二次买汽水 ,分别花了一块钱(+2),

从第三次开始,每次去花一块钱买汽水,再加上用第一次和第二次的空瓶子可以换来一瓶,一共可以获得两瓶汽水(+2),

第四次拿着第三次那两空瓶子,再花一块钱,又可以得到两瓶汽水(+2),

第五次,第六次,以此类推,接下来的每一次都是相当于花1元钱和两个空瓶子,来获得两瓶新的汽水

那么到最后一次时,手里已经没有钱了,即此时只有两个空瓶子换来一瓶汽水(+1)。

去买汽水的过程定义为一个函数就可以递归计算最终结果。

#include<stdio.h>
#include<stdlib.h>
int  Buy(int money)
{
    if(money==1)
        return 1;
    else 
        return Buy(money-1)+2;
}
int main()
{
    int money = 20;
    printf("%d\n",Buy(money));
    system("pause");
    return 0;
}


 

  • 14
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

CaojunjiaOnly

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值