啤酒2元一瓶,四个瓶盖可换一瓶啤酒,2个空瓶也可换一瓶啤酒,10元最多可以喝几瓶,要用js实现
ringa_lee
function computed(money) { var num = parseFloat(money) / 2; var pingzi = num, gaizi = num; var total = num; reComputed(); function reComputed() { if (pingzi < 2 && gaizi < 4) { return; } if (pingzi >= 2) { var beishu = Math.floor(pingzi / 2); pingzi = pingzi - beishu * 2 + Math.floor(pingzi / 2); gaizi = gaizi + beishu; total = total + beishu; } else { var beishu_1 = Math.floor(gaizi / 4); gaizi = gaizi - beishu_1 * 4 + Math.floor(gaizi / 4); pingzi = pingzi + beishu_1; total = total + beishu_1; } reComputed(); } return total; }
输入金钱10,输出15,所有10元最多应该可以喝15瓶
有些东西用计算机要简单一些,但不是所有的计算用计算机都要简单一点!
<!DOCTYPE html> <html> <head> <title>测试</title> <meta charset="utf-8"> </head> <body> <button id="testBtn">test</button> <p style="width:300px;"> <p>啤酒2元一瓶,四个瓶盖可换一瓶啤酒,2个空瓶也可换一瓶啤酒,10元最多可以喝几瓶,要用js实现.下面输入所花费用</p> <input type="text" name="fee" id="allfee"> <button id="openP">计算</button> </p> <script type="text/javascript"> window.onload = function() { var allFee; //总费用 var count = 0; //当前已喝啤酒的数量 var pingzi = 0; //当前的瓶子数 var gaizi = 0; //当前的盖子数量 var calculateCount = document.getElementById("openP"); //点击开始计算 calculateCount.onclick = function(){ allFee = parseInt(document.getElementById('allfee').value) step1(allFee); } //步骤1. 计算用当前费用,所能喝到的啤酒数量 function step1(fee){ let curpi1 = parseInt(fee/2); count += curpi1; pingzi += curpi1; gaizi += curpi1; step2(); } //步骤2. 计算用瓶盖兑换啤酒喝的数量 function step2(){ if(gaizi/4 < 1 && pingzi/2 < 1){ alert(count); return false; }else{ let curpi2 = parseInt(gaizi/4); count += curpi2; pingzi += curpi2; gaizi = gaizi%4 + curpi2; step3(); } } //步骤3. 计算用空瓶子兑换啤酒喝的数量 function step3(){ if(gaizi/4 < 1 && pingzi/2 < 1){ alert(count); return false; }else{ let curpi3 = parseInt(pingzi/2); count += curpi3; gaizi += curpi3; pingzi = pingzi%2 + curpi3; step2(); } } } </script> </body> </html>
function howMany(price, buttle, cap){/*兑换所需单价 瓶子 瓶盖*/ return function get(money, sum = 0, b = 0, pg = 0){ var n = money ? (money / price) << 1 >> 1 : ((b / buttle) << 1 >> 1) + ((pg / cap) << 1 >> 1); return !n ? sum : get(0, sum + n, b % buttle + n, pg % cap + n); } } var count = howMany(2, 2, 4); count(10)
怀念pg作为某种货币的时光
def beer(total, cover, bottle):
if cover < 4 and bottle < 2: return total if cover >= 4: total, bottle, cover = total+cover/4, bottle+cover/4, cover%4+cover/4 if bottle >= 2: total, cover, bottle = total+bottle/2, cover+bottle/2, bottle%2+bottle/2 return beer(total, cover, bottle)
print beer(10/2, 10/2, 10/2)
感觉就得用递归啊
var fn=function(x,y,z,m){//x是完整瓶,y是空瓶,z是空盖,m是能喝的瓶数 return x==0&&y<2&&z<4?m:fn(parseInt(y/2)+parseInt(z/4),y%2+x,z%4+x,m+=x)
} var num=fn(10/2,0,0,0)
输入金钱10,输出15,所有10元最多应该可以喝15瓶
有些东西用计算机要简单一些,但不是所有的计算用计算机都要简单一点!
怀念pg作为某种货币的时光
def beer(total, cover, bottle):
print beer(10/2, 10/2, 10/2)
感觉就得用递归啊
}
var num=fn(10/2,0,0,0)