递归和迭代的比较

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

递归

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

迭代

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

二者比较

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

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

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

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

二者优缺点

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

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

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

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

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

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

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

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

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

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

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值