如何在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
}
}我已经尝试过:
- 通过JVM参数增加栈大小(
-Xss2m),但这只是推迟问题,而不是解决它。 - 将
int替换为long和BigInteger——结果相同,仍然是栈错误。