Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

321
Vistas
¿Cómo es la asignación de memoria para la recursividad con matrices en JavaScript?

Quiero entender, cuando envío un globalArray como parámetro a una función recursiva y asigno el mismo conjunto (localArray) al globalArray, ¿cómo está ocurriendo la asignación de memoria en javascript? Sé que cada recursión tendrá su propia pila de llamadas, y tendrá su propia copia de variables, pero dado que estoy pasando un globalArray a la función, ¿se almacenará siempre una copia de localArray como una nueva matriz en cada pila de llamadas?

Si tuviera que lograr localArray como una copia incremental de la misma variable localArray para cada contexto de ejecución, ¿cómo lo lograría?

Por favor, vea la imagen y el fragmento de código ingrese la descripción de la imagen aquí

 function testFunction(localArray){ globalArray = localArray; if(itr < 5) { globalArray.push(1); itr++; testFunction(localArray); } } var globalArray = [1,2,3]; var itr = 0; testFunction(globalArray);

[agregado más tarde a esta pregunta]

Pero si tuviera que modificar un poco el código en el que hiciera que localArray fuera nulo, globalArray seguiría conteniendo datos, si fuera un valor al que se hiciera referencia.

 function testFunction(localArray){ globalArray = localArray; localArray = null; if(itr < 5) { globalArray.push(1); itr++; testFunction(globalArray); } } var globalArray = [1,2,3]; var itr = 0; testFunction(globalArray);

ingrese la descripción de la imagen aquí

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

... dado que estoy pasando un globalArray a la función, ¿se almacenará siempre una copia del localArray como un nuevo conjunto en cada pila de llamadas?

No. Como señalaron los comentaristas de su pregunta, las matrices se pasan como valores por referencia , lo que significa que la variable globalArray representa el lugar en la memoria donde existe esa matriz. Si cambia una variable que apunta a una matriz (es decir globalArray = ... ), solo está cambiando esa variable. Pero si modifica una matriz (por ejemplo globalArray.push(...) ), está cambiando su contenido para cada variable que busca esa matriz en la memoria, independientemente del nombre de variable que use o dónde exista en la pila .

Si tuviera que lograr localArray como una copia incremental de la misma variable localArray para cada contexto de ejecución, ¿cómo lo lograría?

Hay algunas maneras de hacer algo así.

Por ejemplo, podría clonar la matriz antes de pasarla al siguiente nivel de recursividad, pero si terminara recurriendo muy profundamente, podría usar mucho tiempo y memoria creando matrices y copiando valores que quizás nunca use.

Alternativamente, en lugar de usar matrices, puede crear una estructura de memoria similar a un nodo de lista enlazada, y cada nivel agrega un nodo al final del anterior para pasarlo como una variable. De esa manera, aún es posible recorrer todos los elementos de la pila de llamadas cuando lo necesite, pero usa una cantidad de memoria que es proporcional a la profundidad de la pila de llamadas.

También puede reutilizar una sola matriz global, que push a medida que la pila de llamadas se vuelve más profunda, pero pop los valores antes de regresar de cada nivel de recursividad: básicamente mantiene una pila con estado paralela a la pila de llamadas.

El mejor enfoque probablemente dependerá de los detalles de su algoritmo recursivo y de la cantidad de datos que realmente necesita mantener en cada nivel. En mi experiencia, los parámetros locales que se pasan a cada nivel suelen ser valores de resumen relativamente "planos", como la depth actual de la recursividad, mientras que las variables globales son aquellas en las que se mantiene el estado.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda