关于在排序算法或任何算法中使用递归而不是非递归方法,它的优缺点是什么?
发布于 2011-03-10 03:01:16
在大多数情况下,递归速度较慢,并且会占用更多的堆栈。递归的主要优点是,对于像树遍历这样的问题,它使算法变得更容易或更“优雅”。看看下面的一些比较:
link
发布于 2011-03-10 03:01:58
递归意味着一个函数重复调用
它使用系统堆栈来完成其任务。由于堆栈使用后进先出方法,并且当调用一个函数时,受控对象被移动到定义函数的位置,该函数以某个地址存储在内存中,该地址被存储在堆栈中
其次,它降低了程序的时间复杂度。
虽然有点离题,但有点相关。必读。:Recursion vs Iteration
发布于 2011-03-10 03:12:50
所有的算法都可以递归定义。这使得可视化和证明它变得更加容易。
有些算法(例如Ackermann Function)不能(很容易)迭代地指定。
如果不能执行tail call optimization,那么递归实现将比循环使用更多的内存。虽然迭代可能比无法优化的递归函数使用更少的内存,但它的表达能力有一些限制。
https://stackoverflow.com/questions/5250733
复制相似问题