一个算法题:啤酒2块钱1瓶, 4个瓶盖换1瓶, 2个空瓶换1瓶 问:10块钱可以喝几瓶?(不考虑借酒的情况,想不到方法可以往递归方向思考)

    function maiJiu(money){

               //计算用钱可以买多少瓶

               let jiuCount = parseInt(money/2);//Math.floor(money/2)

               //声明一个兑换方法,参数是瓶盖数和空瓶数

               function duiHuanJiu(pingGai,kongPing){

                   //只有瓶盖数大于或者等于4 或者空瓶数大于或者等于2才能兑换

                   if(pingGai>=4 || kongPing>=2){

                     //计算本轮盖子可以换的酒数量

                     let duiHuanCount = parseInt(pingGai/4);

                     //计算本轮瓶子可以换的酒数量

                     duiHuanCount += parseInt(kongPing/2);

                     //累加到一共能换多少酒的变量里面

                     jiuCount += duiHuanCount;

                     //计算剩下多少盖子和刚换的酒的数量,因为刚换的酒是含盖子的

                     pingGai = pingGai%4 + duiHuanCount;

                     //计算剩下多少瓶子和刚换的酒的数量,因为刚换的酒是含瓶子的

                     kongPing = kongPing%2 + duiHuanCount;

                     //继续调用方法继续兑换

                     duiHuanJiu(pingGai,kongPing);  

                   }

               }

               //调用兑换函数

               duiHuanJiu(jiuCount,jiuCount);

               //将最总兑换了多少酒进行返回

               return jiuCount;

           }

           console.log(maiJiu(10));

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值