在 java 或 c 中我都可以写一个类似
的函数fun(){
fun();
}
(忽略语法细节)
在 Java 中,我得到 OutOfMemory 异常,但在 C(可能还有一些其他语言)中,它似乎永远运行,就好像它是一个无限循环。为什么我在这里也没有出现 OutOfMemory 错误?
最佳答案
由于您的函数是 tail recursion 的示例,那么很可能是 C 编译器将递归优化为迭代,导致它无限循环而不会崩溃。
关于java - 为什么这段代码在java中会耗尽内存,而在c中却不会?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2291261/