Почему главный метод не называется так называемым no. раз рекурсивно в java каждый раз, когда он выполняется?

Когда я пытался запустить эту программу пару раз, окончательное значение i равно 11407, 11417, 11400 и т.д. перед отображением ошибки. Почему конечное значение i не одинаково при каждом выполнении этой программы?

public class MainRecursive {
    static int i=0;

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

        main(arg);
    }
}

Ответ 1

Попытайтесь добавить System.out.flush(); после печати. ​​

Поскольку размер стека не изменяется, я получаю одно значение при каждом запуске, но я думаю, что println() прервется исключением до того, как он обновит вывод в разное время - это зависит от консоли, операционной системы и т.д. и не может быть детерминированным.