performance - 递归与手动堆栈 - 在哪种情况下首选?

标签 performance data-structures recursion stack recursive-datastructures

递归程序在内部创建一个堆栈,并导致用户编写更少的代码。

除了上述原因之外,是否有任何情况下递归实际上优于手动堆栈?

编辑 1:

动态内存分配比递归程序在堆上分配更“昂贵”的方式是什么?

最佳答案

我认为您在说“更少的代码”时所指的主要原因是设计的清晰性和简单性。在具有局部变量和自动存储等功能的语言中,使用这些功能比将所有内容构建到自有堆栈中要自然得多。 (毕竟,为什么要使用函数?为什么不使用 if/elsewhile 作为唯一的控制结构来编写整个程序?)

另一个考虑因素是性能,尤其是在多线程环境中。递归——取决于语言——可能使用 the stack (注意:您说“在内部创建堆栈”,但实际上,它使用此类语言中的程序始终具有的堆栈),而手动堆栈结构则需要 dynamic memory allocation ,这通常会导致明显的性能损失——更不用说确保在您(例如)遇到异常时释放所有内存所增加的复杂性。

关于performance - 递归与手动堆栈 - 在哪种情况下首选?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9106702/

相关文章:

javascript - IE8 Javascript 性能监控工具

java - 使用大集合或带有集合的等效 map 好吗?

c# - 移动列表中的元素

Python 递归意外停止

python - 递归 - 你如何从特定的遍历中提取

Python 脚本 : How to tell if in O(N) or O(N^2) time?

php - Laravel 5可以处理1000个并发用户而不会造成严重滞后吗?

python - Python中的包数据结构?

c++ - 反向链表的递归函数(代码片段解释)

matlab - 查找数组的等效分区