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

177
Views
Función recursiva de Javascript Currying y funciones de flecha

Esto está bien y funciona:

 const power = (x,n) => { if (n === 0) return 1; return x * power(x, n - 1); }

potencia(4,3) 64

Pero tratar de hacer esto como experimento, no funciona, da NaN. No entiendo por qué:

nodo .editor // Entrar en modo editor (Ctrl+D para finalizar, Ctrl+C para cancelar)

 const power = x => { return n => { if (n === 0) return 1; return x * power(x, n - 1); } }

sea t = potencia(4) t(3) NaN

about 4 years ago · Juan Pablo Isaza
3 answers
Answer question

0

No ha convertido la llamada recursiva en la versión curry a forma curry. power(x, n - 1) es esencialmente lo mismo que power(x) porque power solo acepta un argumento, y esta es una función, por lo que no sin razón se convierte en NaN cuando intentas multiplicarlo por un número.

Reescríbelo así en su lugar:

 const power = x => { return n => { if (n === 0) return 1; return x * power(x)(n - 1); } }; console.log('4^3 = ', power(4)(3)); // 64 console.log('2^10 = ', power(2)(10)); // 1024 console.log('5^4 = ', power(5)(4)); // 625 console.log('3^4 = ', power(3)(4)); // 81

about 4 years ago · Juan Pablo Isaza Report

0

Puede almacenar la función anidada y devolver la función y usar esta función para otra llamada con solo la n modificada.

 const power = x => { const fn = n => n === 0 ? 1 : x * fn(n - 1); return fn; }; console.log(power(4)(3));

about 4 years ago · Juan Pablo Isaza Report

0

Como estamos discutiendo formas de funciones "extrañas", también podría contribuir con mi valor de dos centavos:

También puede hacer la función curry como una sola línea como esta:

 const power = (x,pow) => pow = n => --n ? x*pow(n) : x; console.log(power(3)(4)); // 81

Esto es, por supuesto, algo que nadie en su sano juicio haría jamás. Aún así, ¡funciona!

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!