10元买酒问题的程序

    var p = 5;//10元钱第一次购买酒数
    var pg = p * 1;//瓶盖数
    var kp = p * 1;//空瓶数
    var hg = 4;//瓶盖换购基数,4个瓶盖换购一瓶酒
    var hp = 2;//空瓶换购基数,2个空瓶换购一瓶酒
console.log('拥有酒:',p,'瓶;换购规则:',4,'个瓶盖换',1,'瓶酒,',2,'个空瓶换','瓶酒。');

fun();

function fun() {
    var tmpg = parseInt(pg / hg);
    var tmpp = parseInt(kp / hp);

    if (tmpg > 0) {
        pg = pg - (tmpg * hg);
        pg = pg + tmpg;
        kp = kp + tmpg;
        p = p + tmpg;
    }

    if (tmpp > 0) {
        kp = kp - (tmpp * hp);
        kp = kp + tmpp;
        pg = pg + tmpp;
        p = p + tmpp;
    }

    if (tmpg || tmpp) {
        console.log('用',tmpg * hg,'个瓶盖和',tmpp * hp,'个空瓶共换酒',tmpg + tmpp,'瓶。','换购后将之前的',p - (tmpg + tmpp),'瓶加上换购后的','瓶,总酒数:',p);
        fun();
    } else {
        console.log('已无法再进行换购。');
        return false;
    }

}</code></pre>

运行结果

拥有酒: 5 瓶;换购规则: 4 个瓶盖换 1 瓶酒, 2 个空瓶换 1 瓶酒。
用 4 个瓶盖和 4 个空瓶共换酒 3 瓶。 换购后将之前的 5 瓶加上换购后的 3 瓶,总酒数: 8
用 4 个瓶盖和 4 个空瓶共换酒 3 瓶。 换购后将之前的 8 瓶加上换购后的 3 瓶,总酒数: 11
用 0 个瓶盖和 2 个空瓶共换酒 1 瓶。 换购后将之前的 11 瓶加上换购后的 1 瓶,总酒数: 12
用 4 个瓶盖和 2 个空瓶共换酒 2 瓶。 换购后将之前的 12 瓶加上换购后的 2 瓶,总酒数: 14
用 0 个瓶盖和 2 个空瓶共换酒 1 瓶。 换购后将之前的 14 瓶加上换购后的 1 瓶,总酒数: 15
已无法再进行换购。

相关文章

学习编程是顺着互联网的发展潮流,是一件好事。新手如何学习...
IT行业是什么工作做什么?IT行业的工作有:产品策划类、页面...
女生学Java好就业吗?女生适合学Java编程吗?目前有不少女生...
Can’t connect to local MySQL server through socket \'/v...
oracle基本命令 一、登录操作 1.管理员登录 # 管理员登录 ...
一、背景 因为项目中需要通北京网络,所以需要连vpn,但是服...