喵哥很喜欢吃小鱼干,小鱼干2金一条,吃完的2个鱼头可以换1条小鱼干,4条鱼骨可以换1条小鱼干!(不可以:赊账、用鱼骨换鱼头),问10金最多可以吃几条小鱼干?
解题:
问题的关键在,每次吃完鱼都会剩鱼头和鱼骨,剩的鱼头和鱼骨又可以再换小鱼干。
需要用到递归的算法。
写一个函数,参数是上一次剩的鱼头和鱼骨,求得本次吃完剩下的鱼头和鱼骨,返回本次吃鱼的条数+下次吃的条数
var gold = 10;
var price = 2;
var _head, _body;(function fn1(gold, price) {var fish = parseInt(gold / price);var _fish = fn2(fish, fish);console.log(fish + _fish);
}(gold, price))function fn2(head, body) {if (head >= 2 || body >= 4) {_head = parseInt(head / 2) + (head % 2) + parseInt(body / 4);_body = parseInt(body / 4) + (body % 4) + parseInt(head / 2);return parseInt(head / 2) + parseInt(body / 4) + fn2(_head, _body);}return 0;
}
答:喵哥最多能吃到15条小鱼干
本文发布于:2024-01-28 09:45:46,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/17064063516539.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |