买酒兑换问题
题目:
小明去超市买5瓶啤酒,喝完后,一个瓶子可以分成一个瓶盖和瓶子,四个瓶盖可以换一瓶新酒,两个瓶子可以换一瓶新酒,那么小明买5瓶酒最后一共可以喝多少瓶啤酒?
答案
/**
* 问题描述:小明去超市买5瓶啤酒,喝完后,一个瓶子可以分成一个瓶盖和瓶子,
* 四个瓶盖可以换一瓶新酒,两个瓶子可以换一瓶新酒,那么小明买5瓶酒最后一共可以喝多少瓶啤酒?
*/
/**
* 计算能喝的啤酒总瓶数
* @param {*} buyBeerCount 购买的啤酒数量
*/
var calcTotalDrinkBeerCount = function (buyBeerCount) {
/** 记录喝过的总啤酒数 */
var totalBeerCount = 0;
/** 盖子兑换率,4个盖子换一瓶酒 */
var capRate = 4;
/** 瓶子兑换率,2个瓶子换一瓶酒 */
var bottleRate = 2;
/**
* 根据现有啤酒数量,现有瓶盖数量,现有瓶子数量计算可以兑换的新的啤酒数
* @param {*} beerCount 现有啤酒数量
* @param {*} capCount 现有瓶盖数量
* @param {*} bottleCount 现有瓶子数量
* @returns
*/
var calcExchangeBeer = function (beerCount, capCount, bottleCount) {
/**
* 退出递归条件:
* 1. 啤酒数量为 0
* 2. 瓶盖数量不够兑换啤酒
* 3. 瓶子数量不够兑换啤酒
*/
if (beerCount === 0 && capCount < capRate && bottleCount < bottleRate) {
console.log("不够兑换,计算结束");
return;
}
// 如果有整瓶啤酒,则把整瓶啤酒转换为瓶子和啤酒盖,并记录到喝过的总数
if (beerCount > 0) {
// 记录总数
totalBeerCount += beerCount;
capCount += beerCount;
bottleCount += beerCount;
// 啤酒喝了,清空
beerCount = 0;
}
console.log("把【啤酒】转换为【瓶子】和【啤酒盖】:");
console.log(
"已喝啤酒数:" +
totalBeerCount +
",啤酒数:" +
beerCount +
",盖子数:" +
capCount +
",空瓶子数:" +
bottleCount
);
// 把能转换的盖子转换为啤酒
if (capCount >= capRate) {
beerCount += Math.floor(capCount / capRate);
// 剩余瓶盖数
capCount = capCount % capRate;
}
// 把能转换的瓶子转换为啤酒
if (bottleCount >= bottleRate) {
beerCount += Math.floor(bottleCount / bottleRate);
bottleCount = bottleCount % bottleRate;
}
console.log("把【瓶子】和【啤酒盖】转换为【啤酒】:");
console.log(
"已喝啤酒数:" +
totalBeerCount +
",啤酒数:" +
beerCount +
",盖子数:" +
capCount +
",空瓶子数:" +
bottleCount
);
calcExchangeBeer(beerCount, capCount, bottleCount);
};
console.log("初始值:");
console.log("啤酒数:" + buyBeerCount + ",盖子数:" + 0 + ",空瓶子数:" + 0);
calcExchangeBeer(buyBeerCount, 0, 0);
console.log("总共可以喝【" + totalBeerCount + "】瓶啤酒");
};
calcTotalDrinkBeerCount(5);
生活,有时候就是很简单,有时候却很要命。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
2018-01-15 git仓库删除所有提交历史记录