11.9 *递归

如果函数包含了对其自身的调用,该函数就是递归的。根据Aho、Sethi和Ullman,“[a]如果一个新的调用能在相同过程中较早的调用结束之前开始,那么该过程就是递归”。

递归广泛地应用于语言识别和使用递归函数的数学应用中。在本文的早先部分,我们第一次看到了我们定义的阶乘函数:

11.9 *递归 - 图1

我们可以用这种方式来看阶乘:

11.9 *递归 - 图2

我们现在可以看到阶乘是递归的,因为factorial(N) =N* factorial(N-1) 。换句话说,为了获得factorial(N)的值,需要计算factorial (N-1) 。而且,为了找到factorial (N-l),需要计算factorial (N-2)等。我们现在给出阶乘函数的递归版本。

11.9 *递归 - 图3