为什么主方法不被称为相同的否.每次执行时在java中递归的次数?

Uma*_*ani 10 java

当我试图运行这个程序几次的终值i11407,11417,11400显示堆栈溢出错误之前等.为什么i每次执行该程序时最终值都不相同?

public class MainRecursive {
    static int i=0;

    public static void main (String arg[])
    {
        i++;
        System.out.println(i);

        main(arg);
    }
}
Run Code Online (Sandbox Code Playgroud)

小智 3

System.out.flush();打印后尝试添加。

由于堆栈大小没有改变,每次运行时我都会得到相同的值,但我认为println()在不同时间更新输出之前会被异常中断 - 这取决于控制台、操作系统等并且不能是确定性的。

  • 好主意,但实际上我在 MacOS X 10.10 上使用 Java 1.8.0_20 并没有得到一致的结果 (2认同)