关于递归和迭代

递归过程退回的顺序是它前行顺序的逆序。在退回过程中,可能要执行某些动作,包括恢复在前行过程中存储起来的某些数据。这种存储某些数据,并在后面又以存储的逆序恢复这些数据,以提供之后使用的需求,虽然很符合栈这样的数据结构,因此,编译器使用栈实现递归就没什么号惊讶的了。简单的说,就是在前行阶段,对于每一层递归,函数的局部变量,参数值以及返回地址都被压入栈中。在退回阶段,位于栈顶的局部变量,参数值,返回地址被弹出,用于返回调用层次中执行代码的其余部分,也就是恢复了调用状态。

递归和迭代的区别:

  迭代使用的是循环结构,递归使用的是选择结构。递归能使程序的结构更清晰,更简洁,更容易让人理解,从而减少读懂代码的时间。但是大量的递归调用会建立函数的副本,会耗费大量的时间和内存。迭代则不需要反复调用函数和占用额外的内存。因此应该视情况不同情况选择不同的代码实现方式。

  对于现在的高级语言,这样的递归问题时不需要用户来管理这个栈的,一切都由系统代劳了。

 写于2016年12月24日。

原文地址:https://www.cnblogs.com/xiangxinhouse/p/6218436.html