码迷,mamicode.com
首页 > 其他好文 > 详细

递归:兑换问题

时间:2015-05-26 16:40:35      阅读:115      评论:0      收藏:0      [点我收藏+]

标签:

/**
 * 28人买可乐喝,3个可乐瓶盖可以换一瓶可乐,那么要买多少瓶可乐,够28人喝?假如是50人,又需要买多少瓶可乐?
(需写出分析思路)
 * 分析:解决问题需要进行分步进行。
 *    1. 首先写出n瓶可以兑换出多少瓶
 *    2. 再用循环求出1...n瓶中,刚好满足条件的个数。
 *    (不考虑向店主借一瓶,筹够三瓶后还一瓶的情况,虽然这里也可以实现,但是假如店主不肯怎么办?
假如没货了呢?-_-!据说小学生喜欢转牛角尖)
 * @author Barudisshu
 */
public class TestDrink {

    public static void main(String[] args) {
        System.out.println(count(28, 3, 0));
    }

    /**
     * 可以兑换的个数
     */
    public static int exchange(int bots, int con, int count) {
        if (bots < con) {           // 如果小于置换条件
            count += bots;
        } else if (bots == con) {   // 刚好等于置换条件
            count += 1;
        } else {                    // 大于置换条件
            if ((bots / con + bots % con) >= con) {     // 可以再次置换
                count += bots / con + exchange(bots / con + bots % con, con, count);
            } else  // 不可以再次置换
                count += bots / con;
        }
        return count;
    }

    /**
     * 获得实际个数
     */
    public static int count(int bots, int con, int count) {
        int total;
        int i = con;
        while (true) {
            total = i + exchange(i, con, count);
            if (total >= bots)
                break;
            i++;
        }
        return i;
    }

}

递归:兑换问题

标签:

原文地址:http://my.oschina.net/Barudisshu/blog/420114

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!