Связь между массивами

В функции ниже в итоге, когда n станет меньше 1, должен выводится пустой массив, как указано в условии. Но выводятся цифры в обратном порядке в массиве. Это указано в остаточном условии, но они должны помещаться в массив arr, на которой висит рекурсия. Не вижу связи между пустым массивом, который должен выводится в первом условии, и массивом arr, в который пушатся значения. Спасибо за ответ!

function countdown(n){
  if(n < 1) {
      return [];
  } else {
      let arr = countdown(n -1);
      arr.unshift(n);
      return arr;
  }
}

console.log( countdown(5) );


Ответы (1 шт):

Автор решения: Igor

когда n станет меньше 1, должен выводится пустой массив

Не "выводится", а "возвращаться", что и происходит. Но потом, во время движения обратно вверх по цепочке вызовов, в этот массив добавляются числа.

function countdown(n) {
  let arr;
  if (n < 1) {
    arr = ['bottom'];
  } else {
    arr = countdown(n - 1);
    arr.unshift(n);
  }
  console.log(n, JSON.stringify(arr));
  return arr;
}

console.log(countdown(5));

→ Ссылка