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

195
Views
Memoize una función recursiva de Fibonacci

Creé una función withMemo que devuelve una versión memorizada de la función proporcionada.

 const memoizedFn = withMemo(fn)

¿Cómo puedo memorizar esta función de fibonacci que funciona con recursividad?

 const fibo = (n) => { if (n <= 1) return 1 return fibo(n - 2) + fibo(n - 1) }

De hecho withMemo(fibo) no mejora el rendimiento ya que las llamadas recursivas dentro de fibo todavía apuntan a la versión no memorizada...

Así que tengo que alterar la declaración de fibo para que la momoización funcione:

 const momoizableFibo = memoizer => { const fibo = (n) => { if (n <= 1) return 1 return memoizer(fibo)(n - 2) + memoizer(fibo)(n - 1) } return memoizer(fibo) } // momoizableFibo(withMemo)(50) // takes a ms

¿Hay alguna forma de memorizar fibo (o cualquier otra función recursiva) sin alterar su declaración como lo hice yo?

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

0

Puede usar let fibo en lugar de const fibo . Luego reemplace la variable fibo con una versión memorizada. Al actualizar fibo , la llamada anidada ahora se referirá a la función fibo memorizada en lugar del original.

 let fibo = (n) => { console.log(n); // <- show original fibo calls if (n <= 1) return 1; return fibo(n - 2) + fibo(n - 1); } // update fibo variable so the nested fibo call calls the memoized version fibo = withMemo(fibo); console.log("fibo(3)", "//=>", fibo(3)); console.log("fibo(5)", "//=>", fibo(5)); console.log("fibo(2)", "//=>", fibo(2)); // simplified memoize function, only works for serializable parameters function withMemo(fn) { const cache = new Map(); return function (...args) { const key = JSON.stringify(args); if (cache.has(key)) return cache.get(key); const result = fn(...args); cache.set(key, result); return result; } }

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!