二、分治与递归

分治法

设计思想:将一个难以直接解决的大问题,分割成一些规模较小的相同问题,以便各个击破,分而治之。

   (1)对求解问题进行系统的分析

   (2)之后将其分解成若干性质相同的子问题,所得结果为求解子集

   (3)再对这些求解子集分别处理,如果某些子集需要分而治之,再递归使用上述的方法,直到求解子集不需要再细分为止

   (4)最后归并子集的解即得到原问题的解

《二、分治与递归》

分治法的适用条件

分治法所能解决的问题一般有四个特征:
该问题的规模缩小到一定的程度就可以容易地解决;
该问题可以分解为若干个规模较小的相同问题,即该问题具有最优子结构性质
利用该问题分解出的子问题的解可以合并为该问题的解;
该问题所分解出的各个子问题是相互独立的,即子问题之间不包含公共的子问题。

递归法

递归与递归调用:
一个函数在它的函数体内调用它自身称为递归(recursion) 调用。
使用递归要注意以下几点:
 递归就是在过程或函数里调用自身;
 在使用递增归策略时,必须有一个明确的递归结束条件,称为递归出口

分治与递归的联系

由分治法产生的子问题往往是原问题的较小模式,这就为使用递归技术提供了方便。
在这种情况下,反复应用分治手段,可以使子问题与原问题类型一致而其规模却不断缩小,最终使子问题缩小到很容易直接求出其解。这自然导致递归过程的产生。
分治与递归像一对孪生兄弟,经常同时应用在算法设计之中,并由此产生许多高效算法。

    原文作者:递归与分治算法
    原文地址: https://blog.csdn.net/qq_38855717/article/details/81053774
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞