C程序递归

#include"stdio.h"intage(intn){intc;if(n==1)c=10;elsec=age(n-1)+2;return(c);}voidmain(... #include "stdio.h"
int age(int n)
{
int c;
if(n==1)
c=10;
else
c=age(n-1)+2;
return(c);
}
void main()
{
printf("%d\n",age(5));
}

这程序怎么理解啊??我不懂age(n-1)+2是什么意思
能给我再详细的解答下吗 我还是不太懂 最好讲清楚真个程序的运作流程是怎么样的
展开
 我来答
义昀欣ek
2010-07-30 · TA获得超过3298个赞
知道小有建树答主
回答量:6776
采纳率:0%
帮助的人:2164万
展开全部
age(5)说起来太罗嗦,我以age(3)为例。

1.假如main中调用age(3),在进入age(3)函数后,因为n不等于1,所以运行 c=age(n-1)+2;这句话意思是先执行 age(n-1)也就是age(2),将age(2)得到的运算结果加上2赋值给c。

2.接下来,程序执行age(2)。因为n不等于1,所以运行 c=age(n-1)+2;这句话意思是先执行 age(n-1)也就是age(1),将age(1)得到的运算结果加上2赋值给c。

3.接下来,程序执行age(1),此时,n等于1,所以c被赋值为10.

4.接下来,返回到age(2)中,c=age(1)+2=10+2=12.

5.接下来,返回到age(3)中,c=age(2)+2=12+2=14.然后,return c。

6.程序返回到main函数,打印age(3)返回的结果,也就是14.
ahaubit
2010-07-29 · TA获得超过1453个赞
知道小有建树答主
回答量:637
采纳率:0%
帮助的人:771万
展开全部
展开:
age(5)=age(4)+2
=age(3)+2+2
=age(2)+2+2+2
=age(1)+2+2+2+2
=10+8=18
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
gao_kyle
2010-07-30 · TA获得超过236个赞
知道答主
回答量:212
采纳率:0%
帮助的人:0
展开全部
age(n-1)+2;这个表达式其实就是递归调用了int age(int n)这个函数。
以上程序等同于:
#include "stdio.h"
int age(int n)
{
int c;
if(n==1)
c=10;
else
c=age(n-1)+2;
return c;
}
void main()
{
int d;
d=age(5);
printf("%d\n",d);
}
d=age(5)=age(4)+2=(age(3)+2)+2=((age(2)+2)+2)+2=(((age(1)+2)+2)+2)+2=18
如果函数的递归调用你没有学过的话。我只能用下面的话给你讲了。
按照如上程序:
先求age(5),会返回age(4)+2;但是age(4)我们也不知道,所以就求age(4);会返回age(3)+2;同理求age(3)后会返回age(2)+2;求age(2)后会返回age(1)+2;我们知道当n=1时;程序会返回10;
这样的话我们就可以得到age(5)=age(4)+2
=age(3)+2+2
=age(2)+2+2+2
=age(1)+2+2+2+2
=10+2+2+2+2=18
求解完毕。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
予恋寻十1K
2010-07-30 · TA获得超过941个赞
知道小有建树答主
回答量:977
采纳率:50%
帮助的人:851万
展开全部
结果应该是18。首先age(5) 传入是n=5,因为n!=1,执行else 语句
age(5)=age(4)+2;此时n=4,同理,n!=1,执行else语句。age(4)=age(3)+2;age(3)=age(2)+2;age(2)=age(1)+2;age(1)时,n=1,所以执行c=10;再一次加回去。age(5)=10+2+2+2+2=18.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
albertbanda
2010-07-29 · TA获得超过193个赞
知道小有建树答主
回答量:402
采纳率:100%
帮助的人:63.3万
展开全部
age(int)函数一层一层往里套,知道参数等于1,返回10,在一层一层往外扒,脱到最后一层,得出c值。

+2就是每层(n!=1时)都累加。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
珣一
2010-07-29 · TA获得超过129个赞
知道答主
回答量:152
采纳率:0%
帮助的人:81.8万
展开全部
age(5)=age(4)+2;
age(4)=age(3)+2;
age(3)=age(2)+2;
age(2)=age(1)+2;
age(1)=10;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式