题目:
题 号: 188 C3-4_猴子摘桃 语言要求: C++
一个猴子摘了些桃子,
第一天吃掉其中的一半然后多吃了1个,
第二天照此方法又吃掉了剩下桃子的一半加1个,
以后每天如此,直到第十天早上,猴子发现只剩下了1个桃子,
请问猴子第一天总共摘了多少个桃子?
输出:a,b,c,d.....,sum
分别表示
第九天早上没有吃桃子之前桃子数,第八天早上没有吃桃子之前桃子数,....,第一天早上没有吃桃子之前桃子数,总桃子数
思考递归的步骤:
1.明确函数的目的:找到第n早上没吃之前的桃子数
2.找到已知的函数值f(10)=1
3.找到不同参数的函数间关系:f(n+1)=f(n)/2-1→(f(n+1)+1)*2=f(n)
参考代码:
#include <stdio.h>
int nimagl(int x)
{
if (x == 10)
{
return 1;
}
return (nimagl(x+1)+1)*2;
}
int main()
{
for(int i=9;i>=1;i--){
printf("%d,",nimagl(i));
}
printf("%d",nimagl(1));
return 0;
}
答案: