日期:2014-05-20  浏览次数:20660 次

用程序解决这个简单的问题
一元钱可以买两瓶汽水,两个汽水瓶可以换一瓶汽水,请问,十元钱最多可以喝到多少瓶汽水?
谁能用最简单的程序写出来!?

------解决方案--------------------
Java code

 public static void main(String[] args) {
        System.out.println(buy(10));

    }
    
    /**
     * 
     * @param money 給了多少錢
     * @return 
     */
    static int buy(int money) {
        return buy(money / 1, 0);//1元錢喝一瓶滿的,開始時空瓶數量為0
    }

    /**
     * 
     * @param fullNum  满瓶的汽水有多少瓶
     * @param emptyNum  空瓶有多少个
     * @return 可以最多喝多少瓶
     */
    static int buy(int fullNum, int emptyNum) {
        
        if (fullNum == 0)//沒有滿瓶的汽水了
            return 0;
        
        emptyNum += emptyNum + fullNum;//满瓶汽水喝完了剩下多少个空瓶

        return fullNum + buy(emptyNum / 2, emptyNum % 2);//2个空瓶可以换一个满瓶汽水,最后还剩下多少个空瓶不能换
    }