C语言入门~~谁能讲解下递归函数,总想不通了!
谢谢,非常感谢!!!
2016-10-23
#include <stdio.h>
int getPeachNumber(n)
{
int num; //定义所剩桃子数
if(n==10)
{
return 1; //递归结束条件
}
else
{
num = (getPeachNumber(n+1)+1)*2; //这里是不应该用递归呢?
printf("第%d天所剩桃子%d个\n", n, num); //天数,所剩桃子个数
}
return num;
}
int main()
{
int num = getPeachNumber(1);
printf("猴子第一天摘了:%d个桃子。\n", num);
return 0;
}
第10天是已知的数量,有1个桃子,即为函数的初始值。
一天吃一半+1个,(有函数f(n)表示第n天的桃子数)那么:
第9天有(第10天的数量+1)*2个,即(f(10)+1)*2个;
第8天有(第9天的数量+1)*2个,即(f(9)+1)*2个;
第7天有(第8天的数量+1)*2个,即(f(8)+1)*2个;
……
第2天有(第3天的数量+1)*2个,即(f(3)+1)*2个;
第1天有(第2天的数量+1)*2个,即(f(2)+1)*2个;
由以上的递推可以得到一个关系表达式:
第n天有(第n+1天的数量+1)*2个,即(f(n+1)+1)*2个.
举报