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

138
Vistas
Estoy intentando generar un patrón de números que toma una entrada y desciende, luego vuelve a ascender hasta el número original, un dígito a la vez.

Estoy tratando de escribir un problema que genere un patrón similar a este usando recursividad.

 cascade(12345) //should print 12345 1234 123 12 1 12 123 1234 12345

¡Descubrí cómo hacer la parte descendente pero estoy atascado en cómo ascender de nuevo! Esto es lo que tengo hasta ahora...

 function cascade(number) { let strNum = number.toString() let numLength = strNum.length; let lengthTracker = numLength let hasHit1 = false; console.log(strNum) if (lengthTracker > 1 && hasHit1 === false) { strNum = strNum.substring(0, strNum.length - 1); lengthTracker--; return cascade(strNum) } else { return strNum; } } cascade(143)

esto sale con éxito

 '143' '14' '1'

¿Cómo agregaría los números nuevamente uno por uno después?

¡Gracias por tu tiempo!

about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

Otro enfoque (recursivo) mediante el uso de una cadena.

 function cascade(s) { s = s.toString(); console.log(s); if (s.length === 1) return; // exit condition cascade(s.slice(0, -1)); console.log(s); } cascade(12345);
 .as-console-wrapper { max-height: 100% !important; top: 0; }

about 4 years ago · Juan Pablo Isaza Denunciar

0

RECURSIVE APPROACH 🔁

 function cascade(n) { if (n === 0) return; const remain = Math.floor(n / 10); console.log(n); String(remain).length !== 1 ? cascade(remain) : console.log(remain); console.log(n); } cascade(12345);
 /* This is not a part of answer. It is just to give the output full height. So IGNORE IT */ .as-console-wrapper { max-height: 100% !important; top: 0; }

ITERATIVE APPROACH ⏯

 function cascade(n) { const lasts = []; while (n) { lasts.push(n); console.log(n); n = Math.floor(n / 10); } lasts.length--; while (lasts.length) console.log(lasts.pop()); } cascade(12345);
 /* This is not a part of answer. It is just to give the output full height. So IGNORE IT */ .as-console-wrapper { max-height: 100% !important; top: 0; }

about 4 years ago · Juan Pablo Isaza Denunciar

0

Una recursión simple devolverá estos valores, dejándolos registrarlos en un paso separado. Podría verse así:

 const cascade = (n) => n < 10 ? [n] : [n, ... cascade ((n - n % 10) / 10), n] for (let n of cascade (12345)) console .log (n)
 .as-console-wrapper {max-height: 100% !important; top: 0}

Tenga en cuenta la línea separada para imprimir el resultado, ya que la función devuelve una matriz como

 [12345, 1234, 123, 12, 1, 12, 123, 1234, 12345]

El poco de matemáticas en el argumento de la llamada recursiva a la cascade calcula el nuevo número cuando quitamos el último dígito y lo dividimos por diez. Podríamos hacer esto de diferentes maneras reemplazando el cuerpo de la función con:

 n < 10 ? [n] : [n, ... cascade (Math .floor (n / 10)), n]

o el un poco más oscuro, pero más corto

 n < 10 ? [n] : [n, ... cascade (~~ (n / 10)), n]
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