1.题目描述
一堆桃子,每次只吃剩下桃子数的一半多一个,到第n天准备吃的时候只剩一个桃子,计算第一天几个桃子。
2.思路分析
正着推不大好推,此题可以倒着推,可转化为第1天时一个桃子,到第n天几个桃子。然后运用递归调用,写出函数
就可以解决了。
3.代码
#include<iostream>
#include<vector>
using namespace std;
int fun(int n)
{
if(n==1)
return 1;
else return(fun(n-1)+1)*2;
}
int main()
{
vector<int>p;
int n,i;
for(;;)
{
cin>>n;
if(n!=0)
{
p.push_back(fun(n));
}
else
break;
}
for(i=0;i<p.size();i++)
{
cout<<p[i]<<endl;
}
return 0;
}
4.感受
思维要灵活,正反都要想。