В книге "Грокаем алгоритмы" в главе 3, началось изучение Рекурсии. В подглаве "Стек вызовов с рекурсией" делается пример метода вычисления факториала с применением рекурсии
public static int fact(int x) {
        if (x == 1) //базовый случай рекурсии ( т.е. остановка)
            return 1;
        else
            return x * fact(x - 1);
    }
Тут вроде всё понятно, так как дальше идёт иллюстрация того, что происходит в стэке. Далее наткнулся на статью https://habr.com/ru/post/275813/ где идёт решение задач с помощью рекурсии. И застопорился, сразу же на первой))) "Дано натуральное число n. Выведите все числа от 1 до n." Подсмотрел в этой же статье решение:
public static String taskA (int x) {
        // Базовый случай
        if (x == 1) {
            return "1";
        }
        // Шаг рекурсии / рекурсивное условие
        return taskA(x - 1) + " " + x;
    }
Тут у меня n = 3 И никак не могу понять одну вещь: то есть получился стэк из трёх методов вызова(всё как в иллюстрации "Грокаем Алгоритмы") при x = 1, возвращает строку с значением "1". Но, что происходит дальше? и почему на экран выводятся все числа от 1 до 3 (ну в случае с 1, всё понятно) Ведь получается, что блок стэка, где x = 1, выбрасывается и следующий идёт x = 2, то как же тогда получается цифра 2?, если return taskA(2 - 1) + " " + 2? Спасибо!