9.3 递归
- 解释:函数调用自己,这种调用过程称为递归(recursion)。
- 难点:结束递归的时机。否则会陷入无限递归
- 比较:循环效率高,递归方案简洁
9.3.1 演示递归
9.3.2 递归的基本原理
9.3.3 尾递归
- 相当于循环,阶乘很方便
- 循环和递归比较
- 每次递归都会创建一组变量,所以使用的内存更多
- 每次递归会将创建的一组新变量放在栈中
- 每次递归都是函数调用,执行速度慢
- 递归数量受限于内存空间
9.3.4 递归和倒序计算
- 例子:以二进制形式打印整数
- 思路:取余2得出0还是1,r == 0 ? '0' : '1'数值转换成字符。这里用到putchar函数
9.3.5 递归的优缺点
- 方案简洁
- 内存消耗大。多级递归变量数量呈指数增长,有可能导致程序崩溃(斐波那契数列-双递归)
- 不方便阅读和维护
- 效率低