c# - Java中递归和非递归函数的效率比较

标签 c# java recursion performance

据我了解,由于函数调用的开销,递归函数的效率通常低于等效的非递归函数。但是,我最近遇到一本教科书,说这对于 Java(和 C#)不是必需的。

它没有说明原因,但我认为这可能是因为 Java 编译器以某种方式优化了递归函数。

有人知道为什么会这样吗?

最佳答案

教科书可能指的是尾调用优化;有关详细信息,请参阅@Travis 的回答。

但是,教科书在 Java 上下文中是不正确的。当前的 Java 编译器没有实现尾调用优化,显然是因为它会干扰 Java 安全实现,并且会改变出于各种目的对调用堆栈进行内省(introspection)的应用程序的行为。

引用资料:

有迹象表明尾调用优化可能会进入 Java 8。

关于c# - Java中递归和非递归函数的效率比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5267730/

相关文章:

c# - 创建大量小文件的最佳方法?

python - 值在函数中正确打印,但返回时为 None

java - 可被 3 整除的数字递归

c# - 具有完整子结构的矩阵的 "Matrix decomposition"

c# - 委托(delegate)给 C# 中的属性

java - 是否有适用于 Netbeans 6.5 或更高版本的 Apache Velocity 插件?

java - SELECT APDU 无法正常工作

java - ReSTLet URI 模式

c++ - 以 C++ 元编程风格实现 RLE 算法

c# - Entity Framework POCO - 更新集合