杂记——喵哥吃鱼的问题

喵哥很喜欢吃小鱼干,小鱼干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条小鱼干

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值