第五章 递归:(1)何时使用递归。(2)如何从递归角度提取求解问题的递归模型。(3)递归算法的执行过程。(4)递归算法的实现原理。(5)递归算法设计的一般步骤。(6)理解递归数据结构的特征。(7)利用递归思想求解复杂的应用问题。5.1什么是递归:(1)递归分为直接递归和间接递归,而间接递归算法都可以转换为直接递归算法来实现。(2)在递归算法中递归调用语句是最后一条执行语句时称为尾递归。(3)如果求解问题的定义是递归的、存放数据的数据结构是递归的或者问题的求解方法是递归的,一般使用递归算法来求解。(4)递归模型是递归算法的抽象,它反映一个递归问题的递归结构。在设计递归算法时首先获取求解问题的递归模型,然后转换为相应的递归算法。(5)递归模型由递归出口和递归体两部分构成。递归出口确定递归到何时结束,而递归体确定递归求解时的递推关系。
5.2递归算法的设计:(1)递归思路是把一个不能或不好直接求解的“大问题”转化成一个或几个“小问题”来解决。(2)函数调用是通过一个栈来实现的,用于保存返回地址、函数实参和局部变量值等。(3)一般情况下,尾递归算法可以通过循环或者迭代方式转换为等价的非递归算法。对于不是尾递归的复杂递归算法,可以用栈来模拟递归执行过程,从而将其转换为等价的非递归算法。(4)获取递归模型通常分为3个步骤,即分析问题、提取递归体和提取递归出口。在实际中需要根据求解问题来操作。
[单选题]若一个问题既可以用迭代方式也可以用递归方式求解,则____的方法具有更髙的时空效率。
先递归后迭代
迭代
递归
先迭代后递归
答案:迭代
[单选题]一个递归算法必须包括____。
递归部分
迭代部分
终止条件和递归部分
终止条件和迭代部分[单选题]设有一个递归算法如下         int fact(int n) {  //n大于等于0              if(n
n+1
n
n+2
n-1[判断题]任何一个递归过程都可以转换成非递归过程。

[单选题]下列说法中,正确的是( )。
通常使用队列来处理函数或过程调用
对同一输入序列进行两组不同的合法入栈和出栈组合操作,所得的输出序列也一定相同
队列和栈都是运算受限的线性表,只允许在表的两端进行运算
消除递归不一定需要使用栈

温馨提示支付 ¥1.00 元后可查看付费内容,请先翻页预览!
点赞(0) dxwkbang
返回
顶部