递归算法练习-猴子吃桃问题

发布时间 2023-08-09 11:01:13作者: 猫尾大闸蟹

猴子吃桃

猴子吃桃子问题:有一堆桃子,猴子第一天吃了其中的一半,并再多吃了一个!

以后每天猴子都吃其中的一半,然后再多吃一个。当到第 10 天时,
想再吃时(即还没吃),发现只有 1 个桃子了。问题:最初共多少个桃子?
 
思路分析 逆推
1. day = 10 时 有 1 个桃子
2. day = 9 时 有 (day10 + 1) * 2 = 4
3. day = 8 时 有 (day9 + 1) * 2 = 10
4. 规律就是 前一天的桃子 = (后一天的桃子 + 1) *2//就是我们的能力
 
package HomeWork;

/**
 * @author: lwx
 * @date: 2023-08-09 10:33
 */
public class monkey {
//    猴子吃桃子问题:有一堆桃子,猴子第一天吃了其中的一半,并再多吃了一个!
//    以后每天猴子都吃其中的一半,然后再多吃一个。当到第 10 天时,
//    想再吃时(即还没吃),发现只有 1 个桃子了。问题:最初共多少个桃子?

    public static void main(String[] args) {
        monkey monkey = new monkey();
        int peach = monkey.peach(1);
        System.out.println(peach);

    }
    public int peach(int day){
        if (day == 10){
            return 1;
        }
        else if (day >=1 || day<=9){
            return ((peach(day+1)+1)*2);
        }else {
            System.out.println("day in 1-10");
            return -1;
        }
    }
}