一、递归
在定义一个过程或函数时出现调用本过程或本函数的成分成为递归。
递归又分为直接递归和间接递归。
1.递归数列指的是由递归关系所确定的数列
2.递归过程指的是直接或间接调用自身的过程
3.递归算法指的是包含递归过程的算法
4.递归程序指的是直接或间接调用自身的程序
5.递归方法是指一种在有限步骤内根据特定的法则或公式对一个或多个前面的元素进行运算,以确定一系列元素(如数或函数)的方法
二、迭代
利用迭代算法解决问题,需要做好以下三个方面的工作:
1.确定变量
在可以用迭代算法解决的问题中,至少存在一个直接或间接地不断由旧值递推出新值的变量,这个变量就是迭代变量。
2.建立关系式
所谓迭代关系式,指如何从变量的前一个值推出其下一个值的公式(或关系)。迭代关系式的建立是解决迭代问题的关键,通常可以使用递推或倒推的方法来完成。
3.过程控制
在什么时候结束迭代过程?这是编写迭代程序必须考虑的问题。不能让迭代过程无休止地重复执行下去。迭代过程的控制通常可分为两种情况:一种是所需的迭代次数是个确定的值,可以计算出来;另一种是所需的迭代次数无法确定。对于前一种情况,可以构建一个固定次数的循环来实现对迭代过程的控制;对于后一种情况,需要进一步分析出用来结束迭代过程的条件。
三、两者的区别
1.简单地说,递归是重复调用函数自身实现循环。迭代是函数内某段代码实现循环,而迭代与普通循环的区别是:循环代码中参与运算的变量同时是保存结果的变量,当前保存的结果作为下一次循环计算的初始值。
2.递归循环中,遇到满足终止条件的情况时逐层返回来结束。迭代则使用计数器结束循环。当然很多情况都是多种循环混合采用,这要根据具体需求。