递归何时以及为什么执行得比迭代差

本文关键字:迭代 执行 为什么 何时 递归 | 更新日期: 2023-09-27 18:22:16

递归何时以及为什么执行得比迭代差?

我最近在面试中被问到这个问题。我的回答是,当递归的深度很大时,递归的性能会更差。面试官似乎在期待一个不同的答案。谁能再解释一下吗。

递归何时以及为什么执行得比迭代差

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

  • 递归深度很大,增加了堆栈的使用-时间花在缠绕和展开堆栈上,堆栈消耗内存,每次递归的内存更少,而迭代使用不使用更多资源(包括堆栈)的JUMP命令
  • 递归函数保存了许多状态(例如局部变量),这些状态必须保存在内存中,直到递归完成(另一方面,迭代在每次迭代中都会丢弃局部),再次为每次后续递归留下较少的可用内存

根据您的陈述,您已经回答了问题的"何时"部分:

当递归深度较大时

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