我试图做的工作,对树木的例子给出这里:的http:// cslibrary。 stanford.edu/110/BinaryTrees.html 通过递归这些例子全部解决问题,我不知道如果我们能为他们提供的每一个迭代求解,这意味着,我们总是可以肯定的是,可以通过递归解决的问题也将有一个迭代求解,一般。如果没有,我们可以给什么例子来说明这只能通过递归解决的问题/迭代?

-

有帮助吗?

解决方案

的计算机上的迭代和递推之间唯一的区别是是否使用内置的栈或用户定义的堆栈。所以它们是等价的。

其他提示

在我的经验,最递归解决方案的确可以迭代求解。

这也是一个很好的技术有,作为递归溶液可以具有存储器和CPU的消耗过大的开销。

由于递归使用在其上存储有关每个呼叫信息的隐含的堆栈,你总是可以实现一个堆栈自己和避免递归调用。所以,是,每递归溶液可以转化为一个迭代。

参阅这个问题获得证明。

递归和迭代的两个工具,在一个非常基本的水平,做同样的事情:在限定的一组值执行重复操作。他们是可以互换的,没有不能在部分的方式,可以由其中只有一个解决的问题。这并不意味着,但是,一个不能被更适合比其他

递归具有以下优点:其将继续而不已知端。这方面的一个很好的例子是一种调整和螺纹快速排序。

您不能产卵额外的循环,但你可以通过递归产生新的线程。

作为一个“老家伙,”我回落到我得知递归下降解析器更容易写的内存,但基于堆栈的,迭代解析器更好地履行。下面是似乎支持与度量想法的文章:

HTTP ://www.texttoolkit.com/index.php选项= com_content&视图=冠词CATID = 35%3Atechnology&ID = 60%3Abeyond-递归下降&ITEMID = 55

需要注意的一点是作者的超越与递归下降调用堆栈的提及。迭代,基于堆栈的实现可以是更有效的资源。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top