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

119
Views
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 answers
Answer question

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 Report

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 Report
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!