递归描述
递归调用是函数内部调用自身的过程,递归必须要有结束条件,否则会进入无限递归状态。无法停止。 我们称这个条件为(递归基)
递归原理
递归包括(递推)和(回归),递推是指将原问题不断分解为子问题,直到达到结束条件,返回最近子问题的解;然后逆向逐一回归,最终到达递推开始的原问题,返回原问题的解。
要素提取:
- 原问题是否可以分解为层级的子问题。
- 每个子问题的求解方式是否与原问题处理方式相似。
- 整个框架是否存在明确的递归基,即结束条件。
递归案例:阶乘
int factorial(int n) {
//递归基(递归结束条件,此条件为递归中必须要有的)
if (n == 1 || n == 0) return 1;
//return 为回归阶段; n * factorial(n - 1)为递推阶段;
return n * factorial(n - 1);
}