Рекурсивная функция, которая создает массив от 0 до n (JavaScript) - PullRequest
0 голосов
/ 30 октября 2019

В последнее время я много читал о рекурсивных функциях, хотя до сегодняшнего дня я не смог с этим разобраться. Я думаю, что теперь я понимаю рекурсию лучше. Надеюсь, я могу помочь кому-то еще, кто все еще борется с этим:

function count(n) {
    if (n === 1) {
      return [1];
    } else {
      var numbers = count(n - 1); 
      numbers.push(n); 
      return numbers; 
    }
  }

console.log(count(3));

Результат count(3) будет: [1, 2, 3]

1 Ответ

0 голосов
/ 30 октября 2019

Проходим в 3 в count(n). Поскольку n не равно 1, мы сразу переходим к утверждению else. numbers = count(3 - n) или numbers = count(2), если мы перейдем к n. Далее происходит рекурсия:

Поскольку мы не знаем, что именно count(2), мы должны запустить ее, чтобы выяснить. Итак, мы бежим count(2). n не равно 1, поэтому мы снова переходим к оператору else. numbers = count(1). Снова рекурсия. Мы вводим 1 для n, и на этот раз функция возвращает [1]. Теперь, когда мы знаем, что count(1) = [1], мы можем решить count(2). count(2) - это numbers = count(1) или numbers = [1]. На этот раз мы идем дальше в нашем коде и вводим n numbers.push(n), равное 2. Так что count(2) возвращает [1, 2]. Теперь, когда мы знаем результат для count(2), давайте решим count(3). count(3) означает numbers = count(2) или numbers = [1, 2] в нашем результате. Теперь push активируется и вуаля, наш результат для count(3) равен [1, 2, 3].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...