JavaScript — я не понимаю этот случай рекурсии

Цикл 1, продолжение

2c) arr.unshift добавляет число 2 к началу массива.

обр [2]

2d) arr возвращается в цикл 1

1c) arr.unshift добавляет число 1 к началу массива.

массив [1,2]

1d) arr возвращается к вызову функции

Так что если вы написали let result = countdown (2) и console.log (result), вы получите: [1,2]

Меня беспокоит то, что я не понимаю, когда или как становится const arr и array.

Посмотрите на шаги 3b, 2b и 2c:

3b) пустой массив возвращается в цикл 2

2b) arr инициализируется и устанавливается на обратный отсчет (0)

2c) arr.unshift добавляет число 2 к началу массива.

Пустому массиву присваивается значение const arr, затем к этому массиву добавляется число 2.

Теперь посмотрим на шаги 2d и 1c:

2d) arr возвращается в цикл 1

1c) arr.unshift добавляет число 1 к началу массива.

Для этого массива устанавливается новый массив, подобный этому (const arr = [2]), и число 1 добавляется в этот массив. Наконец, в 1d этот новый массив возвращается в выражение, которое вызвало функцию. Для каждого рекурсивного цикла у вас есть что-то вроде этого:

const arr = что-то

new const arr = старый const обр

Цикл 1:

1a) n не менее 1

1b) arr инициализируется и устанавливается на обратный отсчет (1)

Цикл 2:

2а) n не менее 1

2b) arr инициализируется и устанавливается на обратный отсчет (0)

Петля 3:

3a) n меньше 1

3b) пустой массив возвращается в цикл 2

обр []

Понравилась статья? Поделиться с друзьями:
JavaScript & TypeScript
Adblock
detector