Java基础算法题(17):猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个 第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。

查看所有50道基础算法题请看:

Java的50道基础算法题

猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个 第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
package Demo17Monkey_Eat_Peach;
public class Monkey_Eat_Peach {
    /**
     * 猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个
     * 第二天早上又将剩下的桃子吃掉一半,又多吃了一个。
     * 以后每天早上都吃了前一天剩下的一半零一个。
     * 到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
     */
    /*
    分析:第10天剩下1个桃子,其实是第9天它吃过了第8天剩下的一半又吃了一个后剩下的
         那么,倒过来算,第9天还没吃之前应该是(1+1)*2,当天还没吃之前的桃子数是吃过之后剩下的
         桃子数加上一再乘以二。
     */
    public static void main(String[] args) {
        // 定义一个变量来记录总桃子数,第9天晚上剩下1个
        int sum =1;
        // 逆向计算,一直算出第1天还没吃之前的桃子数
        for(int i =9;i>=1;i--){
            sum=(sum+1)*2;
        }
        System.out.println("该猴子第一天共摘了"+sum+"个桃子。");
    }
}

你可能感兴趣的:(Java算法题,java)