【发布时间】:2015-06-10 10:44:07
【问题描述】:
这个问题有部分答案 here 和 here 这似乎暗示 javascript 和 python 会导致“无限递归”。
背景
最近我一直在涉足尾递归,据我目前的理解是,编程风格(*通常)具有等效迭代解决方案的性能优势和可读性优势 - 基本上使其成为两全其美.
示例
我注意到如果要在 .NET 或 Java 中执行此操作:
while(true) {...}
最终,Windows 会弹出一个对话框,允许机器用户更改此类可执行文件的状态:
问题
由于尾递归(*实际上)在这里不必处理 stackoverflow 异常,我是否错误地假设 Java 或 C# 会:
- 触发“Foo.exe 无响应”对话框
- 导致无限递归
此外,我假设此运行时“异常”将由语言的解释器处理是正确的?
【问题讨论】:
-
Java 会抛出一个
StackOverflowError。尾递归在 Java 中并不是特例。
标签: java javascript c# recursion tail-recursion