问题描述
第一天悟空吃掉桃子总计一半多一个,第二天又将剩下的桃子吃掉一半多一个,以后每天吃掉前一天剩下的一半多一个,到第n天准备吃的时候只剩下一个桃子。聪明的你,请帮悟空算一下,他第一天开始吃的时候桃子一共有多少个呢?
输入
输入数据有多组,每组占一行,包含一个正整数n(1 <n <31),表示只剩下一个桃子的时候是在第n天发生的。
输出
对于每组输入数据,输出第一天开始吃的时候桃子的总数,每个测试实例占一行。
#include<stdio.h>
int main(){
int a,i,n;
while(~scanf("%d",&n)){
for(i=n,a=1;i>1;i--){ //i>1就停止循环,因为最后一天没吃 就剩一个了
a=(a+1)*2; //反推
}
printf("%d\n",a);//结束别忘记换行
}
return 0;
}
我的错误:
- -已知最后一天剩余桃子数为1,怎么反推出第一天的桃子数? (递归 an=an-1 -1)这里的an、an-1,n、n-1是下标。
知道a最后为1,反推出an为几,由此得到a=(a+1)*2 -
注意审题,题目要求每组案例输出需换行