递归

分治

三个步骤:

  1. 分解:将原问题分解为若干相同结构的子问题;
  2. 解决:递归求解所有子问题;
  3. 合并:将子问题的解合并为原问题的解。

递归

要理解递归,你要先理解递归,直到你能理解递归。

重要概念:

  1. 递归边界
  2. 递归式

思想:找出问题表达式f(n)f(n-k)之间的关系,同时计算f(1)值,其中f(1)值代表问题初始解,k值视情况而定。
举例:n 的阶乘、爬 n 阶楼梯、斐波那契数列

暴力法

不使用优化算法(剪枝等)、直接用朴素算法(枚举所有情况,然后判断每一种情况是否合法)来解决问题。
举例:全排列、n 皇后问题

回溯法

一般来说,如果在到达递归边界前的某层,由于一些事实导致已经不需要往任何一个子问题递归,就可以直接返回上一层。
举例:n 皇后问题

你可能感兴趣的:(递归)