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

124
Vistas
Problema de recurrencia con mi enfoque o concepto o el problema?

Así que estoy haciendo un desafío de algoritmo en el que me dan una serie de palabras y debo poner en mayúscula la primera letra de la palabra y devolver el arr con las nuevas palabras. debe hacerse con recursividad. Creo que mi enfoque es incorrecto, pero si es conceptual, hágamelo saber y cómo debería pensar al respecto. Si alguien pudiera ayudar a describir cómo debería abordar esto tanto conceptualmente como en código, sería realmente útil.

Para describir mi idea de cómo funciona esto conceptualmente:

 1st call: ['Car'] + capitalizeFirst([taco, banana]); 2nd call: ['Taco'] + capitalizeFirst([banana]); 3rd call: ['Banana'] + capitalizeFirst(['']);

entonces mientras camina hacia atrás regresa

 ['Banana'] + ['""'] ['Taco'] + ['Banana'] ['Car'] + ['Taco','Banana'] returns ['Car','Taco','Banana']

pero lo que obtengo es 'CarTacoBanana'.
aquí está el enfoque que tomé.

 function capitalizeFirst (arr) { if (!arr.length) return ''; arr[0] = arr[0].charAt(0).toUpperCase() + arr[0].slice(1); return [ arr[0] + capitalizeFirst(arr.slice(1)) ]; } capitalizeFirst(['car','taco','banana']); // ['Car','Taco','Banana']

(editar) ¡Pude resolver que mi enfoque era incorrecto! aquí estaba mi solución

 let newArr = []; if (!arr.length) { return newArr; } else { arr[0] = arr[0].charAt(0).toUpperCase() + arr[0].slice(1); newArr.push(arr[0]); } console.log(newArr, 'test'); return newArr.concat(capitalizeFirst(arr.slice(1))) // return newArr;
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

 function capitalizeFirst(arr) { // define the recursion terminal condition if (!arr.length) return []; // utility to capitalize first letter const capWord = s => s.charAt(0).toUpperCase() + s.slice(1); // a well-written recursive function makes clear what each iteration does, here: // capitalize the first word, then recurse on the remaining words... const first = arr[0], rest = arr.slice(1); return [ capWord(first), ...capitalizeFirst(rest) ]; } let arr = [ 'every', 'good', 'boy', 'does', 'fine' ]; let result = capitalizeFirst(arr); console.log(result);

Creo que entendiste la idea aproximada, pero te perdiste algunas cosas del diseño general del algoritmo, así como la perspectiva de implementación. Es mejor devolver algo uniformemente (como [] aquí) y luego combinarlos para formar la respuesta. Así que cambié un poco el caso base y el caso inductivo y luego puede obtener la respuesta con el formato correcto.

Este es el código aproximado y puede verificar la prueba básica del caso de la esquina por su cuenta a partir de este punto.

about 4 years ago · Juan Pablo Isaza Denunciar

0

Su proceso de pensamiento está cerca, pero sugeriría cambiar [""] a un simple [] - No veo de dónde viene la cadena vacía, pero no es necesaria -

 const capitalize = ([ first, ...more ]) => first.toUpperCase() + more.join("") const capitalizeAll = ([ first, ...more ]) => first == null ? [] : [capitalize(first), ...capitalizeAll(more)] console.log(capitalizeAll(["car", "taco", "banana"])) // ["Car", "Taco", "Banana"]

Tenga en cuenta que capitalizeAll no es más que Array.prototype.map con una llamada codificada para capitalize :

 const capitalize = ([ first, ...more ]) => first.toUpperCase() + more.join("") console.log(["car", "taco", "banana"].map(capitalize)) // ["Car", "Taco", "Banana"]

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