1.题目
猴子吃桃子问题:猴子第一天摘下若干个桃子,当即吃了一半还不过瘾,又多吃了一个;第二天又将剩下的桃子吃掉一半又多吃了一个;以后每天早上都吃了前一天剩下的一半零一个。到了第n天想再吃时,见只剩下一个桃子,求第一天共摘了多少个桃子?
要求:用递归实现。
输入格式:
一个整数n(1≤n≤62),表示最后一天第 n 天看到还剩1个桃子。
输出格式:
一个整数,第一天共有多少个桃子
输入样例:
在这里给出一组输入。例如:
10
输出样例:
在这里给出相应的输出。例如:
1534
2.代码
#include <stdio.h>
long int fun(int i,long int n)//之前没在函数参数里写用来表示变化的天数的
{
//而是在循环内部创建i变量并初始化为1,没有考虑到每次进入循环i的值不变
if(i==n)
{
return 1;
}
else
{
return (fun(i+1,n)+1)*2;
}
}
int main()
{
long int n;
scanf("%ld",&n);
long int m=fun(1,n);//因为要把第n天剩1个作为递归函数的结束条件,n的值不能改变,所以增加一个参数
printf("%ld",m);
return 0;
}