一只猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个;第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半加一个。到第N天早上想再吃时,见只剩下一个桃子了。问:第一天共摘了多少个桃子?
输入格式:
输入在一行中给出正整数N(1<N≤10)。
输出格式:
在一行中输出第一天共摘了多少个桃子。
输入样例:
3
输出样例:
10
分析:这个题从读题的时候就可以感觉到出题人暗示让你用递归的方式。
因为,很明显第一天和第二天的关联性很强
然后大概说一下递归的思想,最重要的就是两个方面
递归出口
也就是什么时候结束递归
就拿本题来说,最后一天,也就是只剩下1个桃子的时候,递归就结束了
递归式子
两个过程之前的关系
还是以这个题来说。关系,一半多一个
下面上代码
#include<stdio.h>
int peach(int);
int main() {
int n, sum=0;
scanf("%d", &n);
sum = peach(n);
printf("%d", sum);
}
int peach(int n) {
int sum=0;
if (n==1)
sum = 1;//递归出口,或者说限制条件
else
sum= 2 * peach(n-1) + 2;//递归式子,两个过程之间的关系
//这里解释下为什么是+2 因为最后咱们计算的桃子的总数,而最后一天只剩下一个,并且要把这一个加上去。所以是+2
return sum;
}