| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 618 人关注过本帖
标题:关于函数递归的一个问题
只看楼主 加入收藏
qianlongsy
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2006-1-23
收藏
 问题点数:0 回复次数:6 
关于函数递归的一个问题
age(int n)
{int c;
if(n==1)c=10;
else c=age(n-1)+2;
return(c);
}
main()
{ printf("%d",age(5));
}
这个程序,当n==1后,c=10
接下来程序怎么走?
我觉的当n==1后,不会再走else这一语句了吧
实在没有想明白
搜索更多相关主题的帖子: 递归 函数 
2006-02-16 14:03
hty
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2006-2-11
收藏
得分:0 
else这句是不会执行了,但return这句还是要执行滴。

2006-02-16 17:37
qianlongsy
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2006-1-23
收藏
得分:0 

return完了之后呢
不还是进行不下去吗

2006-02-16 17:52
stnlcd
Rank: 1
等 级:新手上路
帖 子:177
专家分:1
注 册:2004-11-21
收藏
得分:0 
呵呵,大家好!好久没来坛子拉.
这是一个数学递归结构,是递归结构中最简单的一种.其数学表达为:

Age(n) = [ 10 ,n=1
[ Age(n-1)+2, n>1

楼主的函数Age没有返回本身就是错误的,为了简洁可以改为:
int Age(int n) {
return n==1?10:Age(n-1)+2;
}
在理解和编写递归程序的时候最忌讳死抠其程序结构,而不理解起逻辑或者其数学意义.
要理解递归程序希望楼主在递归程序的非递归化问题上多下工夫,递归程序是很美的!

要让一个男人破产,请给他一架相机,要让一个男人倾家荡产,请给他一架望远镜。
2006-02-16 22:00
Xxibug
Rank: 1
等 级:新手上路
威 望:1
帖 子:95
专家分:0
注 册:2006-1-31
收藏
得分:0 

不难理解吧,通俗点,怕楼上的你看不明白,每次return回来的值是c,那么
age(5)=age(4)+2,则printf(...,(age(4) + 2));同理,age(4)=age(3)+2,printf(...,((age(3)+2)+2));
最后成age(1)时,printf(...,((age(1)+2)+2...)),这样应该通俗了吧...


=======【天上有人 地上有狼】=======
2006-02-17 04:37
qianlongsy
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2006-1-23
收藏
得分:0 

明白了,谢谢4楼 5楼的两位耐心指点
感觉递归函数确实是个难点

2006-02-17 11:11
SunShining
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:31
帖 子:2215
专家分:0
注 册:2006-2-17
收藏
得分:0 
这不是书上题吗.159页写的很明白啊

[glow=255,violet,2]闭关修炼ing...[/glow] [FLASH=360,180]http://www./chinaren.swf[/FLASH]
2006-02-17 16:22
快速回复:关于函数递归的一个问题
数据加载中...
 
   



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

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