递归和迭代的比较

自作多情 提交于 2020-01-06 14:33:15

递归和迭代----算法中的递归和迭代

递归

  • 递归就是指程序调用自身的编程思想,即一个函数调用本身
  • 递归的使用能把一个复杂的问题,转化为一个与原问题相似的规模较小的问题来解决,可以极大的减少编程中的代码量

迭代

  • 迭代是利用已知的变量值,根据递推公式不断演进得到变量的一个新值的编程思想

二者比较

  1. 递归中一定有迭代,但是迭代中不一定有递归;大部分可以相互转换。

  2. 相对来说,能用迭代不用递归(因为递归不断调用函数,浪费空间,容易造成堆栈溢出)

  3. 迭代难以理解,但是其执行过程中效率高;递归则易于理解,但是其执行效率相对于迭代低

  4. 在设计中,从效率考虑,如果能用迭代的话,就用迭代;但是从程序算法的理解来看,递归更容易理解。

二者优缺点

递归

  • 优点:
  1. 能用有限的循环语句来实现无限集合

  2. 递归实现的代码易于理解,利于其他人对代码的解读

  3. 能将大问题转化成小问题,减少编程中的代码量

  • 缺点:
  1. 递归的过程中,会不断调用自身,会造成空间的浪费

  2. 调用次数过多后,容易造成堆栈溢出

迭代

  • 优点:
  1. 迭代的算法执行效率高,运行花费的时间只随循环的增加而增加

  2. 迭代没有额外开销,不会有过多的内存消耗

  • 缺点:
  1. 迭代实现的代码难以理解

  2. 代码的设计不如递归设计的代码简洁

  3. 编写复杂问题,比如图、表、二叉树……等的问题时,代码逻辑不易想出,实现较为困难

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!