Так что мне очень трудно понять рекурсию, я не понимаю, как возврат 1 в качестве последнего шага завершает следующий код. Почему при возврате 1 в качестве последнего шага возвращаемое значение не присваивается «1» вместо «27»?
Я попытался объяснить это сам, написав псевдокод, но попытка заставила меня понять, что я действительно понятия не имею, что происходит. Если бы помимо объяснения был предоставлен какой-то псевдокод, это было бы потрясающе. Спасибо.
function solveExponent(num, exp) {
    if (exp === 0) {
        // this causes the stack to well you know exceed the limit
        // letsReturnOne();
        return 1; // so i don't understand how this is any different
    }
    return num * solveExponent(num, exp - 1);
}
alert(solveExponent(3, 3));
function letsReturnOne() {
    return 1;
}
alert(letsReturnOne()); 
                                                                     
                                                                    