Проходим в 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]
.