有趣递归算法问题

前几年有个很火的那个喝啤酒的问题,前几天又在一些算法笔试题里面看到了。就心血来潮把这个算法写出来。题目是这样的


小明有17块钱,要去买啤酒喝,啤酒的单价是2块钱一瓶。这天正好商家有个回收酒瓶和瓶盖的活动,3个空酒瓶能换一瓶酒,5个瓶盖能换一瓶酒。(钱跟酒瓶和瓶盖不能混合使用)

问题1:问小明最多能喝到几瓶酒?

问题2:最后小明还剩下多少钱?多少个瓶子?多少个盖子?



算法 使用的是js

var numpin = 0;

var numgai = 0;

function main(){

var money = 17;

console.log("最多的酒====="+getJiuNum( Math.floor(money/2)));

console.log("还剩下的钱====="+money%2);

console.log("还剩下的瓶子====="+numpin);

console.log("还剩下的盖子====="+numgai);

 }

function getJiuNum(num){

numpin = num;

numgai = num;

return num+getDuiHuanNum(numpin,numgai);

}

function getDuiHuanNum(m,n){

if(m<3 && n<5){

numpin = m;

numgai = n;

return 0;

}

var num1 = Math.floor(m/3);

var num2 = Math.floor(n/5);

numpin = num1 + num2 + m%3;

numgai = num1 + num2 + n%5;

return num2+num1+getDuiHuanNum(numpin,numgai);

}


大聪明的你算出来了吗

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容