天天看点

《C Primer Plus》读书笔记——递归

一个函数调用其本身,此调用过程为递归(recursion)。

举个栗子:

输出如下:

《C Primer Plus》读书笔记——递归

每级递归都使用其私有变量(如例子中的n)

每次函数调用都返回前一级(调用他那级)递归

递归函数中,位于递归调用前的语句和各级被调函数具有相同执行顺序

递归函数中,位于递归调用后的语句和各级被调函数具有相反执行顺序

每级递归会从头执行而不是复制其函数代码,所以一般可代替循环语句。

递归函数必须包含可以终止递归调用的语句(如if)。

最简单的递归形式。

把递归调用语句放在函数结尾(return语句之前)。

计算n的阶乘

将一个整数转换成二进制形式。

<dl></dl>

<dt>优点</dt>

<dd>算法简单</dd>

<dt>缺点</dt>

<dd>占内存,难于阅读和维护</dd>

举个栗子:斐波那契数列:第一、二个数字都是1,而后续的每个数字是其前两个数字之和。1、1、2、3、5、8、13……

双重递归。

致命弱点:每级调用变量数以指数递增!

main( )也可以被自身递归调用或其他函数调用,尽管用得少。

继续阅读