一.递归
函数自己调用自己
死递归可导致栈溢出,原因:
每次函数的调进,会申请空间存放函数的局部变量和上下文的信息,这个空间称为,函数栈帧空间或运行时堆栈。
1.递归的思想
把大问题层层转化为规模小的子问题,直到子问题不能再被拆分。“大事化小”。
“递”,递归;“归”,回归;
2.递归的限制条件
两个必要条件:
>递归存在限制条件
>需要逐步接近限制条件。
二.递归的举例
1.n的阶乘
2.顺序打印整数的每一位
三.递归与迭代
1.迭代:重复做一件事情(如,for循环)
递归有溢出的风险。
两者在使用时,看哪个便利使用哪个。
2.例题:
(1)求第n斐波那契数
(斐波那契数列,1,1,2,3,5,8,13,21.....第N个数等于第n-1个数和第n-2个数之和)
递归:
迭代:
在这,我们可以见到,迭代在该方案中是更便利的(方案一递归,n每增加一些,所计算的数据成几何倍的增加)。