首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有理由选择迭代算法而不是递归算法吗?

问有理由选择迭代算法而不是递归算法吗?
EN

Stack Overflow用户
提问于 2014-01-22 05:28:28
回答 3查看 470关注 0票数 1

与迭代方法相比,我更习惯于实现递归方法。在学习考试时,我使用队列实现了递归BFS (广度优先搜索),但在在线搜索使用队列的递归BFS时,我继续阅读BFS是迭代算法而不是递归算法。那么有什么理由选择一个而不是另一个呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-01-22 05:50:05

迭代和递归都有相同的时间,complexity.difference是:递归程序需要更多的内存,因为每次递归调用都将程序的状态推入堆栈和堆栈溢出,occur.but递归代码易于编写,manage.You可以通过使用tail recursion降低递归程序的空间复杂度。

票数 0
EN

Stack Overflow用户

发布于 2014-01-22 05:32:55

迭代对于计算机来说是更有效的。递归对于程序员来说更有效,也更优雅(也许)。

递归的问题是每次递归调用都会将状态/帧推入调用堆栈,这会很快导致资源耗尽(堆栈溢出!)用于深度递归。但是,解决方案通常更容易编码和阅读。

迭代执行得更好,因为它都是在本地帧中完成的。然而,将递归转换为迭代可以降低由于引入变量而导致的可读性,以适应算法的发展。

选择任何最容易编码和维护的实现。只有担心如果你有一个明显的问题。

票数 2
EN

Stack Overflow用户

发布于 2014-01-22 05:30:37

迭代实现通常更快。一个例子是fibonacci级数。在递归解决方案的简单循环中实现它更快。

在这里更多地讨论Recursion or Iteration?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21274921

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档