递归技术是设计和描述算法的一种强有力的工具,它在算法设计与分析中起着非常重
要的作用,采用递归技术编写出的程序通常比较简洁且易于理解,并且证明算法的正确性要比相应的非递归形式容易得多。因此在实际的编程中,人们常采用该技术来解决某些复杂的计算问题。有些数据结构如二又树,结构本身就具有递归特性;此外还有一类问题,其本身没有明显的递归结构,但用递归程序求解比其他方法更容易编写程序,如八皇后问题,汉诺塔问题等。鉴于该技术的优点和重要性,在介绍其他算法设计方法之前先对其进行讨论
子程序(或函数)直接调用自己或通过一系列调用语句间接调用自己,称为递归,直
或间接调用自身的算法称为递归算法,递归的基本思想就是“自己调用自己”体现了“以目类推”“重复同样的步骤”这样的理念,实际上,递归是把一个不能或不好解决的大问题化为一个或几个小问题,再把这些小问题进一步分解成更小的小问题,直至每个小问题都可以直接解决通常,采用递归算法来求解问题的一般步骤是(1)分析问题,寻找递归关系,找出大规模问题和小规模问题的关系,换句话说,如果个问题能用递归方法解决,它必须可以向下分解为若干个性质相同的规模较小的问题(2)找出停止条件,该停止条件用来控制递归何时终止,在设计递归算法时需要给出明确的结束条件(3)设计递归算法,确定参数,即构建递归体递归算法的运行过程包含两个阶段:递推和回归。递推指的是将原问题不断分解为新的子问题,逐渐从未知向已知推进,最终达到已知的条件,即递归结束的条件。回归指的是从已知的条件出发按照递推的逆过程,逐一求值回归,最后达到递推的开始处,即求得问题的解
2020-01-10
最新推荐文章于 2023-02-27 16:11:39 发布