雜記——喵哥喫魚的問題

喵哥很喜歡喫小魚乾,小魚乾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條小魚乾

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章