| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3751 人关注过本帖, 1 人收藏
标题:递归应该注意什么问题
只看楼主 加入收藏
jiangshuangz
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2010-10-18
结帖率:33.33%
收藏(1)
已结贴  问题点数:20 回复次数:3 
递归应该注意什么问题
老师让讲课,讲递归,小弟我没讲过课!递归都要注意什么问题!什么时候用递归!那位大大给提示一下!先谢谢了!
搜索更多相关主题的帖子: 递归 
2010-10-21 10:28
vandychan
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
等 级:贵宾
威 望:18
帖 子:2296
专家分:6418
注 册:2010-8-20
收藏
得分:10 
递归
确实比较麻烦

到底是“出来混迟早要还”还是“杀人放火金腰带”?
2010-10-21 12:18
cnfarer
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:179
帖 子:3330
专家分:21157
注 册:2010-1-19
收藏
得分:10 
递归虽然有许多诸如解决复杂问题(有些问题必须用递归才能解决)、缩短程序代码、提高编程效率等优点,但是它也有许多致命的弱点。

可以想象,递归调用的过程可能象一个无底深渊,永远不能返回。我们知道函数在调用另一个函数时,需要把原来的函数的局部变量、返回地址等压入堆栈(即所谓的保留现场),以达到正常返回和继续执行。在一个函数进行递归调用时,每一次调用它本身,就象调用一个新的函数一样,他的所有的局部变量都要在内存中保留一份(即压栈),如果递归调用地层次过多甚至无休止的进行递归调用,将耗尽系统资源(栈满),出现“堆栈溢出错误”。因此无意识的使用递归是极易出错的。

我们了解了递归的特点之后,要避免这些问题并不是很困难的,关键要注意以下两点:
1.为防止递归的无休止调用,在递归函数中要及时返回,这就是结束条件的作用。我们应当看到,在所有的递归函数中都有一个终止递归的条件判断。
2.递归函数可以简化程序,但一般不能提高程序的执行效率。直接递归函数要不断的调用自身,而间接递归会调用两个或更多的函数,这样对内存的占用是相当巨大的,因才在递归函数中应尽量少用局部变量。

★★★★★为人民服务★★★★★
2010-10-21 12:58
jiangshuangz
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2010-10-18
收藏
得分:0 
回复 3楼 cnfarer
谢谢!能不能在给我一个间接递归的例子带上代码!我搞不懂间接递归!
2010-10-22 18:23
快速回复:递归应该注意什么问题
数据加载中...
 
   



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

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