出一个问题,每3个瓶子换一瓶酒

本文介绍了一种递归算法,用于计算给定预算下能够购买的冰激凌数量,考虑到每买三个冰激凌可以退还一半的价格。通过递归调用实现对剩余资金的有效利用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

动动脑

冰激凌店举行活动每买k个(k常量等于3)返还玩家半个冰激凌价格的钱已知冰激凌价格为m你的资金为n求能买多少冰激凌r

 不考虑赊账的情况,  答案我已经写出来了, 有没有人有兴趣敲敲键盘呢

    public static void main(String[] args) {
        System.out.println("单价: " + price + ", 每" + k + "个可以换" + price/2 + "块钱");
        
    }
    //每多少个可以换钱
    static int k = 3;
    //单价
    static double price = 3;

提升: 可以使用递归

//每多少个可以换钱
let k = 3;
//单价
let price = 3;
console.log("单价: " + price + ", 每" + k + "个可以换" + price/2 + "块钱");
function count( total){
    //可以买多少个
    let num =  Math.trunc(total/price);
    //可以换多少钱
    let returnMany = Math.trunc(num/k) * price/2;
    //买完之后剩余的零头
    let total2 = total - num * price;
    console.log('总金额'+total+', 可以买'+num+'个, 剩余'+total2+'块钱, 可以换'+returnMany+'快钱');
    //买完之后剩余的零头 + 换的钱
    total = total2 + returnMany;
    if(total < price){
        return num;
    }else{
        num += count(total);
    }
    return num;
}
console.log('150块钱可以买'+count(150));
console.log('98块钱可以买'+count(98));
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

不懂人情世故

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

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

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

打赏作者

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

抵扣说明:

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

余额充值