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

474
Vistas
¿Cómo implementar una función de división sin el operador, bucle o recursividad?

Necesito convertir esta función usando el paradigma de programación funcional, pero no sé cómo, puedo usar reducer o map creando una matriz, pero no sé cómo implementarlo, no puedo usar el operador de división, bucle o recursividad ;

 function divide(dividend, divisor) { var result = 0; while (dividend >= divisor) { dividend -= divisor; result++; } return result; } console.log(divide(100, 2));

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

0

La forma de hacerlo declarativamente es con una función recursiva....

 const divide = (t, b, depth = 0) => t < b ? depth : divide(tb, b, depth+1); console.log(`150 / 3 = ${divide(150, 3)}`); console.log(`24 / 3 = ${divide(24, 3)}`); console.log(`4 / 3 = ${divide(4, 3)}`);

about 4 years ago · Juan Pablo Isaza Denunciar

0

Estoy un poco desconcertado por los requisitos. Tengo entendido que los bucles o la recursividad no están prohibidos en la programación funcional. Asumiendo que esto es un ejercicio (tiene que serlo), aquí hay otra forma de verlo:

Para resolver a / b puedes contar cuántos b caben en a . Así por ejemplo:

 10 / 2 -> [2, 2, 2, 2, 2] -> 5

o:

 +2 +2 +2 +2 (map) 10 / 2 -> [2, 4, 6, 8, 10] -> 5 ^ ^^ (x) (pred)

Entonces podemos desplegar el divisor en una lista de sumas de sí mismo:

 const unfold = (pred, map, x) => { const ys = []; for (let y = x; pred(y); y = map(y)) ys.push(y); return ys; } unfold(x => x <= 10, x => x + 2, 2); //=> [2, 4, 6, 8, 10]

Ahora podemos implementar divide con unfold y devolver la longitud de la lista:

 const divide = (a, b) => unfold(x => x <= a, x => x + b, b) .length; divide(10, 2); //=> 5
about 4 years ago · Juan Pablo Isaza Denunciar

0

Mi solución final es esta:

 const adition = (a, b) => a + b; const subtraction = (a, b) => a - b; const multiplication = (a, b) => { return b >= 0 ? [...Array(b)].reduce((acc) => adition(acc, a), 0) : [...Array(a)].reduce((acc) => adition(acc, b), 0); }; const division = (a, b) => { return a === 0 || b === 0 ? 'Error' : b > 1 ? [...Array(a).keys()].reduce((acc, num) => multiplication(num, b) <= a ? adition(acc, 1) : acc, -1) : a; };
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