Почему параметр index после выполнения рекурсии начинает движение в обратном порядке?
объясните пожалуйста, почему так происходит?
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)
Ответы (1 шт):
Автор решения: Object417
→ Ссылка
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)
}