标题:求助!关于课本上的函数递归调用的问题
只看楼主
wekon
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2006-11-22
 问题点数:0 回复次数:2 
求助!关于课本上的函数递归调用的问题
课本中关于函数的递归调用有一个例题,
age(n)
int n;
{
int c;
if(n==1)c=10;
else c=age(n-1)+2;
return(c);
}

main()
{
printf("%d",age(5));
}

运行结果为 18

我没有看懂,首先main主函数调用age(5)函数,age函数中的n为5,执行c=age(4)+2,调用age函数,n等于4,直到n等于1时,执行
c=10,然后执行return语句将c返回,可是返回到哪里呢?递归调用应该再递退回去阿,执行age(1)=10阿。
不明白,

大家帮帮忙!谢谢!
搜索更多相关主题的帖子: 递归 函数 课本 
2006-11-22 11:04
smartwind
Rank: 1
等 级:新手上路
威 望:1
帖 子:277
专家分:0
注 册:2006-11-13
得分:0 
你用逐步调试仔细看看就明白了

2006-11-22 11:23
zhanghuan_10
Rank: 1
等 级:新手上路
威 望:2
帖 子:751
专家分:0
注 册:2006-10-25
得分:0 
退回到调用它的函数!执行age(1)=10之后,将值返回到age(2)中,接着执行在age(2)未执行的语句return(c),依次类推,直到将值返回到main函数中!将结果打印出!

该学习了。。。
2006-11-22 12:58



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-104610-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 1.552587 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved