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

218
Vistas
¿Cuál es la diferencia entre pasar por referencia y pasar por valor de matrices para llamadas recursivas que comparten una referencia a través de un cierre?

Estaba trabajando en una solución para el siguiente mensaje: Dada una matriz de números enteros distintos, devuelva todas las permutaciones posibles. Puede devolver la respuesta en cualquier orden.

El siguiente código pasa las pruebas:

 /** * @param {number[]} nums * @return {number[][]} */ const permute = function(nums) { const results = []; const backtrack = (first = 0) => { if (first === nums.length) { results.push([...nums]); return } for (let i = first; i < nums.length; i++) { nums = swap(nums, first, i); backtrack(first + 1); nums = swap(nums, first, i) } } backtrack() return results }; const swap = (arr, i, j) => { const temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; return arr; }

Considere un ejemplo para calcular las permutaciones donde nums = [1, 2, 3] .

La brecha en mi comprensión es evidente cuando trato de pasar nums a results.push() en lugar de results.push([...nums]) , que devuelve la matriz de resultados de longitud adecuada, pero se llena con [1, 2, 3] matriz en cada índice. ¿Por qué es necesario hacer una copia superficial de nums aquí en lugar de simplemente presionar nums directamente? Tengo entendido que en el punto de la llamada recursiva donde se satisface el caso base, nums será cualquiera que sea la permutación actual. Después del almacenamiento de nuestra permutación, retrocedemos/desintercambiamos nums y continuamos. Supongo que debe ser el caso de que todas las permutaciones en la matriz de result siempre reflejen el valor actual del elemento de referencia, pero si ese es el caso, ¿por qué la matriz de resultados final se llena con [1, 2, 3] para cada ¿elemento?

Pensé que anteriormente tenía una sólida comprensión de pasar por referencia frente a pasar por valor, pero ahora dudo de esa comprensión. Cualquier aclaración sobre esto sería muy apreciada, ya que siento que casi estoy allí, pero no puedo hacer que haga clic.

Gracias por tomarse el tiempo para leer / ayudar.

about 4 years ago · Juan Pablo Isaza
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