何时以及为什么递归比迭代更糟糕?

时间:2012-02-01 03:25:38

标签: c# recursion

何时以及为什么递归比迭代更糟糕?

我最近被问到这个问题的面试。我的答案是当递归深度很大时递归表现更差。 面试官似乎期待一个不同的答案。任何人都可以解释一下。

2 个答案:

答案 0 :(得分:4)

可能有很多原因;一些浮现在脑海中的想法:

  • 递归深度是大量增加堆栈使用 - 卷绕和展开堆栈所花费的时间,堆栈占用的内存为每次递归留下更少,而迭代使用不使用更多资源的JUMP命令(包括堆栈)
  • 递归函数包含许多状态(例如局部变量),这些状态必须保留在内存中,直到递归完成(另一方面,迭代会在每次迭代时抛弃本地),同样留下更少的可用内存每次后续递归

答案 1 :(得分:0)

根据您的陈述,您已回答问题的部分时间:

  

当递归深度很大时

但不是为什么部分,所以你只回答了面试官问的一半。