递归
什么是递归算法呢?
程序调用自身的编程技巧称为递归( recursion)。递归做为一种算法在程序设计
语言中广泛应用。 一个过程或函数在其定义或说明中有直接或间接调用自身的一种
方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问
题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,
大大地减少了程序的代码量。
简而言之:大懒支小懒
回溯法
递归的要点
- 初始状态
- 目标状态
- 穷举范围
- 约束条件
- 状态恢复
递归代码框架
先判断是否达到目标状态
如果达到,判断当前状态是否合法是否计入答案。
未达到,枚举可能的状态,记录本轮选择,进入下一层。
返回后,消除影响。