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

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

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 Report

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 Report

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