一道面试题,总共能喝多少瓶啤酒

    xiaoxiao2022-06-29  68

    题面

    啤酒2元一瓶,2个空瓶可以换一瓶,4个瓶盖可以换一瓶,现在给10元钱,总共能喝多少瓶啤酒?

    分析

    从题面可以看出是一个循环的过程,先买啤酒,喝完再拿瓶子或盖子换,最终当XX条件符合时将不再能循环进行下去,推演到算法里可以想到递归算法。

    标题

    以下仅以JS代码为例写下这个算法:

    var money = 10; var count = Maht.floor(money/2); //喝几瓶计数 var curPing = count; //当前空瓶数 var curGai = count; //当前瓶盖数 drinkHowMany(); console.log("还剩"+curPing+"个空瓶"); console.log("还剩"+curGai+"个瓶盖"); function drinkHowMany(){ if(curPing<2&&curGai<4){ //递归终结条件 return; } if(curGai>=4){ var curAdd1 = Math.floor(curGai/4); count+=curAdd1; curGai+=curAdd1+curGai%4;//增加的瓶数+剩余于的瓶盖; curPing+=curAdd1; } if(curPing>=2){ var curAdd2 = Math.floor(curPing/2); count+=curAdd2; curPing=curAdd2+curPing%2; //增加的瓶数+剩余于空瓶; curGai+=curAdd2; } drinkHowMany(); }
    转载请注明原文地址: https://ju.6miu.com/read-1125377.html

    最新回复(0)