function fibonacci(n) { if (n <= 1) { return 1 }
return fibonacci(n - 1) + fibonacci(n - 2); }
function memoizedFibonacci(n, memo) { memo = memo || {}
if (memo[n]) { return memo[n] }
if (n <= 1) { return 1 }
return memo[n] = memoizedFibonacci(n - 1, memo) + memoizedFibonacci(n - 2, memo) }
function memoizedFibonacci2(n, memo) { memo = memo || {}
if (memo[n]) { return memo[n] }
if (n <= 1) { return 1 }
return memo[n] = memoizedFibonacci2(n - 2, memo) + memoizedFibonacci2(n - 1, memo) }
function memoizer(fun) { let cache = {}
return function(n) { if (cache[n] != undefined ) { return cache[n] } else { let result = fun(n) cache[n] = result
return result
}
} }
const fibonacciMemoFunction = memoizer(fibonacci) const fibonacciMemoFunction2 = memoizer(memoizedFibonacci)