function fib(n) {
    if (n < 1) return 0
    if (n < 3) return 1
    
    return fib(n-1) + fib(n-2)
}

// decorator function
function memoize(func) {
    const memo = new Map()
    
    return function(n) {
        if (!memo.has(n)) {
            memo.set(n, func(n))
        }
        
        return memo.get(n)
    }
}

// decorate fib()
fib = memoize(fib)

for (let i = 0; i < 12; i++) {
    console.log(`fib(${i}) = ${fib(i)}`)
}

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: