@apepbaby
Начинающий JavaScript разработчик.

Как работает рекурсия?

Начал учить js по курсам и параллельно читать книгу "Выразительный JavaScript", начал читать тему про рекурсию, в принципе, понимаю, как она работает, но на примере из книги не могу разобраться.
function findSolution(target) {
    function find(current, history) {
        if(current == target) {
            return history;
        } else if(current > target) {
            return null;
        } else {
            return find(current + 5, `(${history} + 5)`) || 
                   find(current * 3, `(${history} * 3)`);
        }
    }
    return find(1, '1');
}
console.log(findSolution(24));

В частности, не могу понять, как язык понимает, нужно умножать ему или прибавлять, прошу, помогите!!!
  • Вопрос задан
  • 307 просмотров
Решения вопроса 1
Конкретно к твоему вопросу рекурсия не при чем.
return find(current + 5, `(${history} + 5)`) || find(current * 3, `(${history} * 3)`);

Чтобы понять как работает этот кусок кода нужно внимательно прочитать эту главу.
https://developer.mozilla.org/en-US/docs/Web/JavaS...
Особо обратить внимание на Short-circuit evaluation
если find(current + 5, `(${history} + 5)`) которое может быть приведено к false (в твоем случае null) то будет выполнен второй кусок кода
find(current * 3, `(${history} * 3)`)
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
IonDen
@IonDen
JavaScript developer. IonDen.com
Вот в этом курсе чувак суперски объясняет рекурсию:
https://www.udemy.com/course/js-algorithms-and-dat...
Ответ написан
Комментировать
@Anonymous5454587
Рекурсия - это цикл, который вызывает самого себя.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы