Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

216
Views
¿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
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!