【发布时间】:2013-07-24 16:28:32
【问题描述】:
我有一个递归算法(以三种不同的形式),它计算前 n 个奇数正整数的总和。这些算法仅用于学习,我知道有更好的方法来解决这个问题。我已经用 Lua 和 Java 编写了三个变体,我将它们称为 Lua 1、Lua 2、Lua 3 和 Java 1、Java 2 和 Java 3。前两个非常相似,只是重新排列。
Lua 1 和 2 的表现非常好,很容易达到 n = 100,000,000。 Lua 3 在 n > 16,000 时遇到堆栈溢出。
Java 1 在遇到堆栈溢出之前只能达到 n = 4000,而 Java 2 达到 9000。Java 3 在再次遇到堆栈溢出之前设法达到 n = 15,000。
谁能解释这些结果?为什么 Java 1、2 和 3 表现如此糟糕,而 Lua 1 和 2 表现如此出色?
【问题讨论】:
标签: java recursion lua stack-overflow