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

171
Visualizações
no puede entender la lógica de la recursividad

Esta función tiene que devolver una cadena invertida. Por ejemplo, “perro” -> “dios”. Funciona correctamente pero no entiendo la lógica y necesito una explicación.

 function reverse (str) { if (str.length <= 1) return str; return reverse(str.slice(1)) + str[0] }
about 4 years ago · Santiago Gelvez
3 Respostas
Responde à pergunta

0

El caso base de la función recursiva es la declaración if, donde cuando solo hay un carácter en la cadena, obtienes la cadena misma.

En la instrucción de retorno, la función de división proporciona la cadena sin el primer carácter. El + str[0] ayuda a invertir la cadena adjuntando la primera letra de la cadena al final de la cadena, mientras que la función inversa se llama recursivamente en la cadena sin el primer carácter.

Veamos el mundo TENET como ejemplo.

En la primera ejecución, no se llamará a la instrucción if. La declaración de devolución devolverá inversa (ENET) + T. Esto hará que se vuelva a llamar inversa con ENET como entrada.

En la segunda ejecución, la declaración if se omite nuevamente y la declaración return dará reverse(NET) + E.

Con suerte, puedes ver a dónde va esto. En cada llamada recursiva, el primer carácter se agrega al final de la cadena de entrada. Para cuando terminemos todas las llamadas, ¡la palabra se invertirá!

about 4 years ago · Santiago Gelvez Relatório

0

Explicación

En primer lugar, llama a reverse(“dog”) y devuelve reverse(“og”)+”d” Luego, reverse(“og”) continúa ejecutándose nuevamente. Devuelve reverse(“g”)+”o” El último, reverse(“g”) solo devuelve “g” ya que la sentencia if es verdadera

Luego, conecta el reverso ("g") al reverso ("g") + "o", como resultado, se devuelve "go" Finalmente, conecta el reverso ("og") al reverso ("og") + "d ”, que es “ir”+”d”, como resultado “dios” es la salida

El flujo

  • (1) inverso("perro") llamado -> retorno inverso("og")+"d"
  • (2) inverso("og") llamado -> retorno inverso("g")+"o"
  • (3) revertir ("g") llamado -> devolver "g" (si declaración)
  • (4) conectar (3) a (2) -> volver "g" + "o" -> "ir"
  • (5) conectar (4) a (1) -> volver "ir" + "d" -> "dios"
about 4 years ago · Santiago Gelvez Relatório

0

No es necesario que alguien escriba el comportamiento de recurrencia para un ejemplo, ya que es posible que no se aplique a todos los tipos y órdenes de recurrencia.

Lo mejor es ejecutar y depurar el fragmento proporcionado y observar el seguimiento de la pila local y los valores del ámbito, ya que necesita comprender lo que hace en cada llamada.

 function reverse (str) { if (str.length <= 1) return str; debugger; const remainingString = str.slice(1); const leadingChar = str[0]; return reverse(remainingString) + leadingChar; }

En este ejemplo es obligatorio entender solo que esto ejecutará primero el reverse(remainingString) hasta llegar a if (str.length <= 1) return str; , luego extraiga funciones de la pila de llamadas y agregue el valor devuelto con + leadingChar hasta que todas las funciones se extraigan de la pila de llamadas.

about 4 years ago · Santiago Gelvez 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