Почему параметр index после выполнения рекурсии начинает движение в обратном порядке?

Рейтинг: 0Ответов: 1Опубликовано: 02.03.2023

объясните пожалуйста, почему так происходит?

https://codepen.io/Jane111/pen/LYJWKZp

Проблема на 9 строке (codepen)

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

Спасибо!

const arr = ['Аня', 'Игорь', 'Марина', 'Коля']

function printArr(arr, index = 0) {
  console.log(arr[index]);
  index = index + 1
  
  if (index < arr.length) {
    printArr(arr, index)
    console.log(index);
  } 
}

printArr(arr)   

Ответы

▲ 0

const arr = ['Аня', 'Игорь', 'Марина', 'Коля']

function printArr(arr, index = 0) {
  console.log(arr[index]);
  index = index + 1
  
  if (index < arr.length) {
    console.log(index); // Поменял местами
    printArr(arr, index)

  } 
}

printArr(arr)   

Почему в вашем примере сначала выводятся все имена, а лишь затем индексы?

Потому что это так работает. Когда выполнение доходит до рекурсивного вызова printArr(arr, index), то выполнение текущего printArr как бы замирает. В итоге получается что-то такое:

printArr() {
    printArr() {
        printArr() {
            console.log(3)
        }
        console.log(2)
    }
    console.log(1)
}