经典Java题 猴吃桃规律 算法

猴子吃桃子

猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。 第二天早上又将剩下的桃子吃掉一半,又多吃一个。以后每天早上都吃了前一天剩下的一半零一个。 到第N天早上想再吃时,见只剩下一个桃子了。求第一天共摘多少桃子。

输入

N

输出

桃子总数

样例输入

10

样例输出

1534

首先我们先确定有什么解法:
第一:规律 我们可以发现 小猴子除了最后一天外,它每一天打开篮子时剩下桃子都是他前一天的两倍 再 加一个  即: 2*(前一天+1)
那么 我们就可以用简单的循环来解决此问题。
那么有代码:

import java.util.*;
public class Main{
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt(),num = 1;   //num代表桃子数,初始化为1 ,即最后一天的桃子不在公式里
        for(;n>1;n--)   //如果n>1的话 那么我们循环 一共循环n-1次,即:除了最后一天外,其他天都参与公式运算
        {
            num = 2*(num+1);    //每次桃子数(sum)都等于(前一天的桃子树+1)*2,当循环完毕,每次的sum都等于前一天的桃子数
        }
        System.out.print(num);  //最后输出桃子数 
    }
}

 这个是通过规律来求这个桃子的数量。

其实还有 递归实现 但是这里不讲解 自己去探讨

本文来自博客园,作者:咸瑜,转载请注明原文链接:https://www.cnblogs.com/bi-hu/p/14000568.html

原文地址:https://www.cnblogs.com/bi-hu/p/14000568.html