- 递归:程序调用自身的编程技巧称为递归,是函数自己调用自己。
- 一个函数在其定义中直接或间接调用自身的一种方法,它通常把一个大型的复杂的问题转化为一个与原问题相似的规模较小的问题来解决,可以极大的减少代码量。递归的能力在于用有限的语句来定义对象的无限集合。
- 使用递归要注意的有两点:
1)递归就是在过程或函数里面调用自身;
2)在使用递归时,必须有一个明确的递归结束条件,称为递归出口。
- 递归分为两个阶段:
1)递推:把复杂的问题的求解推到比原问题简单一些的问题的求解;
2)回归:当获得最简单的情况后,逐步返回,依次得到复杂的解。
- 迭代:利用变量的原值推算出变量的一个新值。如果递归是自己调用自己的话,迭代就是A不停的调用B。
| 定义 | 优点 | 缺点 | |
|---|---|---|---|
| 递归 | 程序调用自身的编程技巧称为递归 | 1)大问题化为小问题,可以极大的减少代码量; 2)用有限的语句来定义对象的无限集合.; 3)代码更简洁清晰,可读性更好; |
1)递归调用函数,浪费空间; 2)递归太深容易造成堆栈的溢出; |
| 迭代 | 利用变量的原值推算出变量的一个新值,迭代就是A不停的调用B。 | 1)迭代效率高,运行时间只因循环次数增加而增加; 2)没什么额外开销,空间上也没有什么增加; |
1) 不容易理解; 2) 代码不如递归简洁; 3) 编写复杂问题时困难。 |
| 二者关系 | 1) 递归中一定有迭代,但是迭代中不一定有递归,大部分可以相互转换。 2) 能用迭代的不用递归,递归调用函数,浪费空间。并且递归太深容易造成堆栈的溢出。 |
