| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 430 人关注过本帖
标题:一段递归的代码 不理解
只看楼主 加入收藏
sainimu78
Rank: 2
等 级:论坛游民
帖 子:57
专家分:26
注 册:2010-1-27
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:3 
一段递归的代码 不理解
1  int age(int n)
2  {
3  int c;
4  if(n==1)
5  c=10;
6  else
7  c=age(n-1)+2;
8  return c;
9  }
10 main()
11 {
12 printf("%d",age(5));
13 getch();
14 }

结果怎会是 18 ~?

到第7行 c=age(n-1)+2; age(n-1)调用自己
当减到n为1的时候不就返回 c了吗~?  
结果怎么不是10
难道通过if了 就不做下一句了?~

[ 本帖最后由 sainimu78 于 2010-1-27 16:22 编辑 ]
搜索更多相关主题的帖子: 代码 递归 
2010-01-27 16:17
fqtb16
Rank: 7Rank: 7Rank: 7
来 自:上海
等 级:黑侠
帖 子:96
专家分:504
注 册:2009-12-28
收藏
得分:5 
1, age(4)+2
2,age(3)+2+2
3.age(2)+2+2+2
4,age(1)+2+2+2+2
5,18

爱拼才会赢
2010-01-27 16:33
nbaqqqq
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:202
专家分:137
注 册:2009-11-6
收藏
得分:15 
if(n==1) c=10;
else c=age(n-1)+2;    这两句的意思是n为一的时候 执行 c=10  否则(也就是n不为一)就执行c=age(n-1)+2

5传给参数n  

c=age(5-1)+2;      (c=16+2;)也就是最后的结果c=18         第1次调用自己
return c;

c=age(4-1)+2;      (c=14+2;)                             第2次调用自己
return c;

c=age(3-1)+2;      (c=12+2;)                             第3次调用自己
return c;
 
c=age(2-1)+2;       (c=10+2;)                            第4次调用自己
return c;

c=10;
return c;

2010-01-27 16:45
sainimu78
Rank: 2
等 级:论坛游民
帖 子:57
专家分:26
注 册:2010-1-27
收藏
得分:0 
啊 理解了 谢谢你呀

c=10+2+2+2+2

c=age(4)+2
age(4)=age(3)+2
age(3)=age(2)+2
age(2)=age(1)+2
age(1)=10
2010-01-27 16:46
快速回复:一段递归的代码 不理解
数据加载中...
 
   



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

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