Skip to main content

递归 & 分治

Summary

递归(Recursion)指在函数定义中调用函数自身,也指通过反复把问题拆成同类子问题来求解的方法。分治(Divide and Conquer)即分而治之,把一个复杂问题分成若干相同或相似的子问题,递归求解到可直接处理的规模后,再由子问题的解合并出原问题的解。两者的区别在于:递归是一种编程技巧和思维方式,分治则是很大程度上基于递归、用来解决更具体问题的算法思想。

参考资料​

递归​

递归(Recursion)在数学和计算机科学中是指在函数的定义中使用函数自身的方法,在计算机科学中还额外指一种通过重复将问题分解为同类的子问题而解决问题的方法。

分治​

分治(Divide and Conquer)字面上的解释是「分而治之」,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,直到最后子问题可以简单地直接求解,原问题的解即子问题的解的合并。

递归是一种编程技巧,一种解决问题的思维方式;分治算法很大程度上是基于递归的,解决更具体问题的算法思想。

例题​

用 L 字形的毯子覆盖 2k×2k2^k\times2^k 的迷宫,迷宫有一个空格。