- 6
- 0
- 约3.24千字
- 约 31页
- 2018-05-14 发布于四川
- 举报
算法分析与设计 第2章 递归技术 本章学习目标: (1)掌握递归的概念。 (2)学会用递归方法解决实际问题。 递归的概念 直接或间接调用自身的算法称为递归算法。 用函数自身给出定义的函数称为递归函数。 递归通常把问题分成n个子问题,子问题又继续细分,直到规模足够小时,直接解决。 使用递归技术使得算法的描述简洁且易于理解。 递归算法的适用范围 数据的定义是按递归定义的(阶乘) 问题的解法按递归定义的(回溯) 数据的结构形式按递归定义的(树的遍历) 递归解题的特点 在使用递归时,必须有一个明确的递归结束条件,称为递归出口。 每次调用在规模上都有所缩小(通常是减半) 相邻两次调用之间有紧密的联系,前一次要为后一次做准备。 递归算法解题通常显得很简洁,但运行效率较低。 递归次数过多容易造成栈溢出。一般不提倡用递归算法设计程序。 如何设计递归算法 确定递归公式 将问题逐层分解,把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来。 确定边界条件 递归的应用举例 例1 阶乘函数 阶乘函数可递归地定义为: 递归的应用举例 例2 Fibonacci数列 无穷数列0,1,1,2,3,5,8,13,21,34,55,…,被称为Fibonacci数列。它可以递归地定义为: 递归的应用举例 例3 Ackerman函数 当一个函数及它的一个变量是由函数自身定义时,称这个
原创力文档

文档评论(0)