递归 (recursion) 是数学中处理问题的一种常用方法, 在计算机科学中指的是一种通过重复将问题分解为同类的子问题而解决问题的方法.
换句话说, 在处理分治问题上采用递归是一种很简单的方法, 其强大描述能力, 可以把无限过程表达在有限语句中.
以下讨论的均是线性过程, 都使用数学公式描述, 而非任何一种编程语言
递归过程和计算过程
阶乘是一种典型的递归过程, 从递归的定义来说反复的调用同一种函数解决问题, 就是一种递归.
计算机不能处理无限的过程, 所以递归必须要有一个条件终止当前计算, 称为终止条件, 这里阶乘的终止条件就是 n=0 .
要实现递归的编程总体来说有两种方法, 一种的循环, 另一种是递归. 在某种意义上来说递归过程是可以完全转化成循环过程, 反之不一定成立.
把阶乘公式转化成具体的演化过程, 以 f(6) 为例子.
从演化过程可以看出的计算步骤可以看出一种很明显是, 先展开后收缩的过程.
展开阶段是一种计算的构造过程, 收缩阶段是实际的计算过程, 完整的完成一次计算需要 12 个计算步骤, 这种形状的计算称为
来源: https://juejin.im/post/5b376e6051882574a11f7844