Подскажите почему выходит результат 101 , 100

public class Fortest {

    static void recur(int i) {
        if (i <= 100) {
            //System.out.println(i);
            recur(++i);
            System.out.println(i);
        }
    }

    public static void main(String[] args) {

        recur(99);

    }
}

Ответы (3 шт):

Автор решения: Алексей Р

Здесь рекурсия работает аналогично циклу со стеком. Результат работы функции no_recur() тот же самый, но без рекурсии.

public class Main {

    static void recur(int i) {
        if (i <= 100) {
            recur(++i);
            System.out.println(i);
        }
    }

    static void no_recur(int i) {
        Stack<Integer> stack = new Stack<>();
        while (i <= 100) {
            stack.push(++i);
        }
        while (stack.size() > 0) {
            System.out.println(stack.pop());
        }

    }

    public static void main(String[] args) {
        int number = 95;
        recur(number);
        System.out.println("----------");
        no_recur(number);

    }
}
101
100
99
98
97
96
----------
101
100
99
98
97
96
→ Ссылка
Автор решения: Ринат
  1. вызывается функция recur с аргументом 99.
  2. так как 99 меньше равно 100 то аргумент (++i) сначала увеличивается на 1 и становится 100 и потом вызывается второй раз функция recur с аргументом 100.
  3. так как 100 меньше равно 100 то аргумент (++i) сначала увеличивается на 1 и становится 101 и потом вызывается третий раз функция recur с аргументом 101.
  4. так как условие 101 меньше равно 100 - ложно то функция ничего не делает и третий вызов завершается и происходит возврат во второй вызов.
  5. дальше во втором вызове аргумент был 101 и он печатается, потом второй вызов завершается и происходит возврат в первый вызов.
  6. дальше в первом вызове аргумент был 100 и он печатается, потом первый вызов завершается
→ Ссылка
Автор решения: стасевич

вот тебе минусуют... и мне не понятно почему???
я тоже по началу не мог понять что такое рекурсия, и честно, я до сих пор не особо понимаю что это)
вот мой вопрос, ознакомься с ответами...
объясните рекурсию на рабоче-крестьянском языке
тебе будут писать про аналогию со стопками торелок и тд и тп.
но как сказал один умный дядька - чтобы понять рекурсию - надо понять рекурсию
я тебе могу вставить статью из baeldung
recursion

The Definition In Java, the function-call mechanism supports the possibility of having a method call itself. This functionality is known as recursion.

For example, suppose we want to sum the integers from 0 to some value n:

public int sum(int n) {
    if (n >= 1) {
        return sum(n - 1) + n;
    }
    return n;
}

Copy There are two main requirements of a recursive function:

A Stop Condition – the function returns a value when a certain condition is satisfied, without a further recursive call The Recursive Call – the function calls itself with an input which is a step closer to the stop condition Each recursive call will add a new frame to the stack memory of the JVM. So, if we don't pay attention to how deep our recursive call can dive, an out of memory exception may occur.

This potential problem can be averted by leveraging tail-recursion optimization.

понятно!?? 

ну ... так себе...
резюмируя:
рекурсия - это метод/функция, которая вызывает сама себя, и у неё есть условие выхода....

посмотри видео, что я тебе в коментах писал ранее,
Иван Головач - процедурная java - рекурсия
тыкай сюда

→ Ссылка