Avatar ·

如何在Java中实现递归?

如何在Java中正确实现递归?StackOverflowError问题

大家好!我正尝试理解Java中的递归,但总是遇到StackOverflowError错误。请告诉我如何正确组织递归方法调用以避免这个问题?

我写了一个简单的函数来计算数字的阶乘,但当值为10000时程序崩溃。这是我的代码:

public class RecursionTest {
    public static int factorial(int n) {
        if (n == 0) {
            return 1;
        }
        return n * factorial(n - 1);
    }

    public static void main(String[] args) {
        System.out.println(factorial(10000)); // StackOverflowError
    }
}

我已经尝试过:

  1. 通过JVM参数增加栈大小(-Xss2m),但这只是推迟问题,而不是解决它。
  2. 将int替换为long和BigInteger——结果相同,仍然是栈错误。