Почему слишком много рекурсии

#javascript

#javascript

Вопрос:

Я пытаюсь понять, почему в этом случае слишком много рекурсии. Я не использовал никакого цикла.

 function a(param1, param2) {

    function b(input1) {
        return input1 * 2;
    };

    function c(input2) {
        return input2 * 2;
    };    

    return a(param1)   b(param2);
};

document.write(a(1, 2));
 

Комментарии:

1. Вы вызываете a(param1) внутри a . Возможно, вы намеревались вызвать c вместо этого…

2. Где ваше условие остановки? Я его не вижу. Эта рекурсия будет продолжаться вечно.

3. Вы вообще знакомы с рекурсией? Вы пытались этому научиться?

4. Рекурсия демистифицирована : это всего лишь рекурсия, а не магия. Рекурсия — это просто функция, вызывающая другую функцию. Не нужно этому учиться (Джон может сделать это сейчас). Теперь самое сложное — это когда остановиться. Если функция вызывает саму себя, вам необходимо иметь изменяемый параметр / внешнюю переменную, которая сообщает ей, когда нужно остановиться.

Ответ №1:

В a вашем return заявлении a снова вызывается вызов, поэтому он будет делать это бесконечно. Вы, вероятно, имели в виду:

 return b(param1) c(param2);
 

Ответ №2:

Функция a продолжает вызывать саму себя. Вы имели в виду вместо этого вызвать функцию c?

Ответ №3:

Вы вызываете a внутри a . Это будет продолжать накапливать стек вызовами функций для себя. Вы не указали никаких условий завершения для своих вызовов, поэтому рекурсия продолжается до тех пор, пока у вас не закончится память.