递归与迭代

迭代与递归的解释

  递归与迭代是计算机中常见的两种循环方式;

  递归:指程序调用自身的编程思想,即一个函数调用本身;
  迭代:利用已知的变量值,根据递推公式不断演进得到变量新值得编程思想;

  递归是将大问题化为相同结构的小问题,从待求解的问题出发,一直分解到已经已知答案的最小问题为止,然后再逐级返回,从而得到大问题的解;
  迭代是从已知值出发,通过递推式,不断更新变量新值,一直到能够解决要求的问题为止。

  递归要分为两部分来看到,'递'是将问题层层往下传递,'归'是将答案层层往上回答

  递归算法从思想上更加贴近人们处理问题的思路,而且所处的思想层级算是高层(神),而迭代则更加偏向于底层(人),所以从执行效率上来讲;底层(迭代)往往比高层(递归)来的高,但高层(递归)却能提供更加抽象的服务,更加的简洁。
  在循环的次数较大的时候,迭代的效率明显高于递归。大量的递归调用会建立函数的副本,会耗费大量的时间和内存。而迭代则不需要反复调用函数和占用额外的内存。


  经典的话:迭代是人,递归是神!“普通程序员用迭代,天才程序员用递归”

相同点:

  1、递归和迭代都是循环的一种

不同点:

  1、程序结构不同;
    递归是重复调用函数自身实现循环
    迭代是函数内某段代码实现循环;其中,迭代与普通循环的区别是:迭代时,循环代码中参与运算的变量同时是保存结果的变量,当前保存的结果作为下一次循环计算的初始值。
  2、算法结束方式不同;
    递归循环中,遇到满足终止条件的情况时逐层返回来结束
    迭代则使用计数器结束循环

  3、效率不同;
    在循环的次数较大的时候,迭代的效率明显高于递归

递归优缺点

  优点

  • 大问题化为小问题,可以极大的减少代码量;
  • 用有限的语句来定义对象的无限集合.;
  • 代码更简洁清晰,可读性更好

  缺点

  • 递归调用函数,浪费空间;
  • 递归太深容易造成堆栈的溢出

迭代优缺点

  优点

  • 迭代效率高,运行时间只因循环次数增加而增加;
  • 没什么额外开销,空间上也没有什么增加

  缺点

  • 代码不如递归简洁;
  • 编写复杂问题时困难。
原文地址:https://www.cnblogs.com/guge-94/p/10509074.html