递推法与递归法
递归与递推都是将一个复杂过程分解为几个简单重复步骤进行计算。
递推法:
一种在数学和其他领域广泛应用的重要方法,它在计算机科学中被用作一种关键的数值求解算法。
特点:
递推法的核心在于找到递推关系式。这种方法可以将复杂的计算过程转化为简单的重复步骤,充分利用计算机在运行程序时的时间局部性和空间局部性。
思想:
首先找到各个相邻数据项之间的递推关系;
递推关系避开了求通项公式的麻烦,尤其是对于那些难以或无法求解通项公式的题目;
将复杂问题分解为若干步骤的简单运算;
一般来说,递推算法可以视为一种特殊的迭代算法。
解题的基本思路:
将复杂计算转换为简单重复运算;
通过找到递推关系式进行简化运算;
利用计算机的特性,减少运行时间。
一般步骤:
根据题目确定数据项,并找到符合要求的递推关系式;
根据递推关系式设计递推程序; 根据题目找到递推的终点;
单次查询可以不进行存储,多次查询都要进行存储;
按要求输出答案即可。
递归法:
一种自顶向下的算法,它通过不断地直接或间接调用自身的函数,通过每次改变变量完成多个过程的重复计算,直到到达边界之后,结束调用。
实现的核心
分治策略,即分而治之,将复杂过程分解为规模较小的同类问题,通过解决若干个小问题,进而解决整个复杂问题。
思想:
将复杂计算过程转换为简单重复子过程;
找到递归公式,即能够将大问题转化为小问题的公式;
自顶向下计算,在返回完成递归过程。
递归算法设计的一般步骤:
根据题目设计递归函数中的运算部分;
根据题目找到递归公式,题目可能会隐含给出,也可能需要自己进行推导;
找到递归出口,即递归的终止条件。