@fleshik

Откуда при рекурсии в консоли берутся B:1 и B:2?

Подскажите откуда в примере берутся B:1 и B:2
function Operation(counter){
            counter--
            console.log("A:", counter)
            
            if (counter != 0){
                Operation(counter)
            }
            console.log("B:", counter)
        }

      Operation(3)

После того как завершилось выполнение строки console.log("B:", counter) и вывелось B:0 не пойму что происходит дальше
  • Вопрос задан
  • 72 просмотра
Решения вопроса 1
Stalker_RED
@Stalker_RED
А вот я вам отступов насыпал
Operation(3)
    // вывод А:2
    // сработал if, произошел вызов Operation(2)
    Operation(2)
        // вывод А:1
        // сработал if, произошел вызов Operation(1)
        Operation(1)
                     // вывод А:0
                     // if не сработал
                     // вывод В:0        
        // вывод В:1 из Operation(2)
    // вывод В:2 из Operation(3)
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
А дальше происходит возврат из функции и продолжает выполняться предыдущий экземпляр функции.
А дальше происходит возврат из функции и продолжает выполняться предыдущий экземпляр функции.
И так пока стек вызовов не опустошится.
Ответ написан
Комментировать
georgi1984
@georgi1984
Нравится JavaScript
Потому что, есть стек вызовов. Когда функция завершается полностью, она передаёт управление предыдущей запущенной функции, то есть программа продолжает выполняться после Operation(counter) и так пока стек не закончится
Ответ написан
Комментировать
@iljaGolubev
Если не нужно чтобы выводило B, добавьте return.
if (counter != 0){
                Operation(counter)
                return
            }
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы