频道栏目
读书频道 > 软件开发 > c语言 > Objective-C程序设计入门与实践
6.4.1 认识递归算法
2015-11-23 13:32:34     我来说两句
收藏   我要投稿
《Objective-C程序设计入门与实践》详细介绍了Objective-C语言和苹果iOS、Mac平台面向对象程序编程的知识;结合独特的学习方法,在每章都合理嵌入大量的范例,让本书更适合于读者学习和课堂教学。如果你对iPhone  立即去当当网订购

6.4  递归算法

递归算法是把问题转化为规模缩小了的同类问题的子问题。然后递归调用函数(或过程)来表示问题的解。使用递归往往使函数的定义和算法的描述简单易懂。在实际开发过程中,递归算法,是一种很常用的算法。因此,本节将介绍一些有关递归算法的知识。

6.4.1  认识递归算法

递归过程一般通过函数或子过程来实现。递归算法:在函数或子过程的内部,直接或者间接地调用自己的算法。图6-12展示了递归算法处理流程。图6-13展示了递归算法,在国人最喜欢的棋牌游戏中——象棋中的应用。



 

1. 递归算法的特点

递归算法是一种直接或者间接地调用自身的算法。在计算机编写程序中,递归算法对解决一大类问题是十分有效的,它往往使算法的描述简洁而且易于理解。

递归算法解决问题的特点:

递归就是在过程或函数里调用自身。

在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口。

递归算法解题通常显得很简洁,但递归算法解题的运行效率较低。所以一般不提倡用递归算法设计程序。

在递归调用的过程当中系统为每一层的返回点、局部量等开辟了栈来存储。递归次数过多容易造成栈溢出等。所以一般不提倡用递归算法设计程序。

2. 递归算法的使用要求

递归算法虽然应用起来很简洁方便,但并非所有情况下都是适合应用递归算法,应用递归算法,必须考虑当前的情况是否符合递归算法的使用要求。递归算法所体现的“重复”一般有三个要求:

(1)是每次调用在规模上都有所缩小(通常是减半);

(2)是相邻两次重复之间有紧密的联系,前一次要为后一次做准备(通常前一次的输出就作为后一次的输入);

(3)是在问题的规模极小时必须用直接给出解答而不再进行递归调用,因而每次递归调用都是有条件的(以规模未达到直接解答的大小为条件),无条件递归调用将会成为死循环而不能正常结束。

您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:6.3.3 其它排序
下一篇:6.4.2 递归算法的简单应用
相关文章
图文推荐
排行
热门
最新书评
特别推荐

关于我们 | 联系我们 | 服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑--致力于做实用的IT技术学习网站

世界杯外围投注官网