啤酒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(); }