算法复习(2)递归
递归是函数和过程调用的一种特殊形式,即允许函数和过程进行自我调用。递归有助于找到简化问题并找到解决问题的方法。
线性递归是每一层次上至多只有一个实例,且构成线性的次序关系。线性递归是递归的最基本形式。
减而治之是将复杂的问题分成一个平凡的子问题和一个规模缩减的子问题,分别求解,最后得到原问题的解。
分而治之是将大规模的问题划分成两个(或多个)子问题,分别求解,再得到原问题的解。
递归算法易于理解和实现,但是效率较低,在追求效率时,应将递归改写为等价的迭代形式。尾递归的最后一步是递归调用,是最简单的递归模式,可以方便改写成迭代形式。
递归低效的之一是各递归实例被大量的重复地调用,因此时间复杂度与空间复杂度均较高。