面试题(一次有意思的买饮料)

题目
你有 20 块钱,一瓶饮料卖 5 块钱,2个瓶身可以换一瓶饮料,4个瓶盖可以换一瓶饮料。问最多可以喝多少瓶饮料
思路
【面试题(一次有意思的买饮料)】除了第一次用钱买,剩余的均是通过瓶身或瓶盖兑换而来,那么兑换到直到瓶身和瓶盖无法兑换为止
编码

function buyDrinks(total, price) { //第一次用钱购买 const firstNum = Math.floor(total / price); let res = firstNum; // 剩余瓶盖 let remainCap = firstNum; // 剩余瓶身 let remainBody = firstNum; // 兑换 while(remainCap >= 4 || remainBody >= 2) { // 瓶盖可兑换数量 const numCap = Math.floor(remainCap / 4); // 瓶身可兑换数量 const numBody = Math.floor(remainBody / 2); // 总共兑换的数量 const changeTotal = numCap + numBody; res += changeTotal; remainCap = remainCap % 4 + changeTotal; remainBody = remainBody % 2 + changeTotal; }return res; } console.log(buyDrinks(20, 5))

    推荐阅读