题目要求:
一堆桃子,第一天吃掉所有桃子总数一半多一个,第二天吃剩下的桃子的一半多一个,以后每天吃掉吃掉前一天剩下的一半多一个,到第n天准备吃的时候剩下一个桃子,开始的时候一共有多少桃子。
题目思路:
利用递归来求第一天的时候共有多少桃子,递归边界n==1的时候返回1,否则返回前一天桃子数加1的和乘两倍。用数组a接收递归函数的返回值。
细节处理:
利用while函数输入n的值,将每个测试实例的值赋给数组a,输出数组a。
#include<bits/stdc++.h>
using namespace std;
int s(int n)
{
if(n==1)return 1;
return 2*(s(n-1)+1);
}
int main()
{
int m=0,a[100],i,n;
while(cin>>n)
{
if(n==0) break;
a[m]=s(n);
m++;
}
for(i=0;i<m;i++)
cout<<a[i]<<endl;
return 0;
}