题目描述
猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。 第二天早上又将剩下的桃子吃掉一半,又多吃一个。以后每天早上都吃了前一天剩下的一半零一个。 到第N天早上想再吃时,见只剩下一个桃子了。求第一天共摘多少桃子。
要求
输入天数N,输出桃子总数
样例
输入10,输出1534.
题解
通过列出数据发现规律后就很简单
假设桃子总数为10.
第一天剩余 | 第二天剩余 | 第三天剩余 |
---|---|---|
10/2-1=6 | 6/2-1=3 | 3/2-1=1 |
可以发现第N-1天剩余桃子数为 (N+1)*2
可以直接用一层循环写出题解
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sca = new Scanner(System.in);
int n = sca.nextInt();
int sum=1;
for(int i=n;i>=2;i--) {
sum=(sum+1)*2;
}
System.out.println(sum);
}
还可以用递归来写
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sca = new Scanner(System.in);
int n = sca.nextInt();
System.out.println(f(n));
}
private static int f(int n) {
if (n == 1) {
return 1;
}
return 2 * f(n - 1) + 2;
}