function countup(n) { if (n < 1) { return []; } else { const countArray = countup(n - 1); countArray.push(n); return countArray; } } console.log(countup(5));
Hasta ahora entiendo que al establecer countArray en la función, decide llamarse a sí misma hasta n = 0. En ese punto, devuelve una matriz vacía a countArray, pero simplemente no entiendo qué sucede después de ese punto que da este resultado extraño de los números que se ordenan, supuse que simplemente empujaría el valor actual de N siendo 0 a la matriz, pero claramente no...
¿Alguien sabe lo que está pasando aquí?
0 no se inserta en la matriz debido a la condición if. En ese momento, su countArray está configurado en [].
Cuando se usa el intérprete de recursión, se necesita una forma de poder comprender en qué orden deben procesarse estas funciones.
Cuando su secuencia de comandos se ejecuta por primera vez, el intérprete crea un contexto de ejecución global y lo empuja a la pila de ejecución.
Una vez que termina, el motor ejecuta primero la función cuyo contexto de ejecución está en la parte superior de la pila. En tu caso n=1. Lo empuja a la matriz, lo saca de la pila y luego continúa n=2 y así sucesivamente hasta que llega al último en la pila n=5
function countup(n) { if (n < 1) { return []; } else { const countArray = countup(n - 1); console.log(n) countArray.push(n); return countArray; } } console.log(countup(5));