Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

195
Visualizações
Explicación de la recursividad

Produce la suma de los primeros n valores en una matriz.

 function sum(arr, n) { if (n <= 0 ){ return 0; } else { return sum(arr, n-1) + arr[n-1]; } }

Hola, tengo esta función recursiva simple de freecodecamp. Entiendo el concepto de recursión, sin embargo, parece que no puedo entender por qué esto funciona en este caso de uso exacto.

Principalmente estoy luchando por comprender cómo se aumenta y almacena el recuento para producir una suma total final, así como por qué la función no devuelve 0 como la suma una vez que llega a su punto de interrupción.

Cualquier explicación es apreciada, gracias.

Además, esto no es para un proyecto ni nada por el estilo, solo trato de entender mejor este concepto.

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Piense en cada llamada recursiva como si agregara un marco a la pila. Todos los marcos llamados deben dar una respuesta antes de que pueda calcular la respuesta para el marco actual.

El programa de llamadas comienza:

 FRAME_A sum([5,7,10],3) n <= 0: False answer here = sum([5,7,10],2) + 10 ^ wait for this to be computed let's call this WAIT_A -------- FRAME_B sum([5,7,10],2) n <= 0: False answer here = sum([5,7,10],1) + 7 ^ wait for this to be computed let's call this WAIT_B --------- FRAME_C sum([5,7,10],1) n <= 0: False answer here = sum([5,7,10],0) + 5 ^ wait for this to be computed let's call this WAIT_C --------- FRAME_D sum([5,7,10],0) n <= 0: True return 0 FRAME_D is done. (Now, we are rolling back) WAIT_C is now 0. FRAME_C answer is 0 + 5 = 5. FRAME_C is done. WAIT_B is now 5. FRAME_B answer is 5 + 7 = 12. FRAME_B is done. WAIT_A is now 12. FRAME_A answer is 12 + 10 = 22. FRAME_A is done. All frames are done. Final answer = 22.
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda