java - 意外的堆栈内存清理
问题描述
为什么函数名称first
抛出 StackOverflowError 但函数名称second
不抛出?
public static void first ( String [] args){
recursion(50, 5);
recursion(500, 50);
recursion(5000, 500);
}
public static void second ( String [] args){
recursion(5000, 500);
recursion(5000, 500);
recursion(5000, 500);
}
public static void recursion(int upper , int lower){
if (upper < lower){
System.out.println("Recursion finished.");
} else {
recursion(upper - 1, lower);
System.out.println(upper + "");
}
}
环境:openjdk 14.0.2, 2,3 GHz 8-Core Intel Core i9, 16 GB 2400 MHz DDR4