递归与迭代有什么(如果有的话)优点/缺点?这个比那个好吗?如果是这样,为什么?一个比另一个差吗?我希望得到一个普通专业人士与他们对这两者的概述。显然,有时你会(或可能)只使用递归;这个问题更像是“如果你可以使用递归或迭代,你会使用哪个以及为什么......”
答案 0 :(得分:0)
不是该主题的专家,但这是我的.5 $
经常数学。函数由递归定义,因此通过递归实现精确定义会产生一个“通过定义”正确的程序
递归定义的函数(或某种程度上的方法)的属性可以通过归纳来证明
就个人而言,我发现调试典型的“程序”代码要困难得多,因为必须牢记所有变量的演变,所以会有很多书籍正在进行中。
通常情况下编译器会从循环中产生比从递归定义更高效的机器代码。但是,许多递归程序可以通过编译器“作为循环”进行优化(例如尾调用优化)。
总结一下,我会说递归是一种语言比循环更“高级”的特性。意味着编译器方面还有更多工作要做,以便生成高性能代码,但在“人”方面推理递归程序更方便。