递归算法优于迭代算法的优势是什么?

时间:2015-07-02 16:57:09

标签: algorithm

我在理解一件事情时遇到问题,即当递归涉及如此多的空间以及迭代算法和递归算法的时间复杂度是相同的,除非我将动态编程应用于它,那么为什么我们应该使用递归,Is它只是为了减少我们使用它的代码行,因为即使实现递归,在将函数控制从一个调用传递到另一个调用期间也必须保存整个PCB?

虽然我看过很多与之相关的帖子,但我还不清楚实现递归迭代的主要优势是什么?

1 个答案:

答案 0 :(得分:0)

  

通过迭代实现递归的主要优势是什么?

  1. 可读性 - 不要忽视它。如果代码可读且简单 - 编码它将花费更少的时间(这在现实生活中非常重要),并且更简单的代码也更容易维护(因为在将来的更新中,将很容易理解什么&#39 ;继续)。
    现在,我并没有说"让所有内容递归!",但如果在递归解决方案中某些内容更具可读性 - 除非在生产中它使代码在性能上受到明显影响 - 保持它!
  2. 效果即可。是的,你听到了我的声音。有时,要将递归解决方案转换为迭代解决方案,您需要的不仅仅是一个简单的循环 - 您需要一个循环+一个堆栈。
    然而,很多时候,您的堆栈DS并不像机器一样高效,而是由Intel / AMD的数百名员工为此目的进行了优化。
    This thread讨论了一个特定的案例,其中算法从递归到迭代的简单转换会产生更糟糕的结果,并且为了超越机器堆栈 - 您需要投入大量时间来优化堆栈,你的时间是稀缺资源。
    同样,我不是说 - "递归总是更快!"。但在某些情况下,它可能是。