- 算法练习相关代码主要是来自剑指Offer与LeetCode题目
递归优点
- 简洁
递归缺点
- 递归需要用到函数调用,函数调用需要时间和空间的消耗:每一次函数调用都需要在内存栈中分配空间来保存参数、返回地址及临时变量;对于栈中数据的压入和弹出都需要一定的时间。
- 递归有可能计算了多次重复,例如Fibonacci数列
- 更严重的问题:每一次调用函数都需要栈空间,每个进程的栈的容量有限,当调用层级太大的时候,就会超出栈的容量,导致调用栈溢出。写一个简单的
1+2+3..+n
就可以知道,如果n太大,递归就会出错。
迭代优点
- 可以避免以上的缺点
迭代缺点
- 需要较多代码