-2

递归与迭代有什么(如果有的话)优点/缺点?这个比那个好吗?如果是这样,为什么?一个比另一个差吗?我正在寻找一般的专业人士与反对者对两者的概述。显然,有时您会(或可以)只使用递归。这个问题更像是“如果你可以使用递归或迭代,你会使用哪个以及为什么......”

4

1 回答 1

0

不是该主题的专家,但这是我的 .5$

  • 经常数学。函数是通过递归定义的,因此通过递归实现精确定义会产生一个“按定义”正确的程序

  • 递归定义的函数(或某种程度的方法)的性质可以通过归纳来证明

  • 就个人而言,我发现调试典型的“过程”代码要困难得多,因为必须牢记所有变量的演变,所以需要做很多工作。

  • 通常,编译器从循环中生成的机器代码似乎比从递归定义中生成的机器代码更有效。但是,许多递归程序可以由编译器“作为循环”进行优化(例如尾调用优化)。

总而言之,我会说递归是一种语言的“高级”特性,而不是循环。这意味着为了生成高性能代码,编译器方面还有更多工作要做,但在“人类”方面推理递归程序更方便。

于 2013-04-27T22:59:55.690 回答