let calculations = 0;
function FibonacciMemoized() {
let cache = {};
return function fib(n) {
calculations++;
if(n in cache) {
return cache[n];
} else {
if(n<2) {
return n;
} else {
cache[n] = fib(n-1)+ fib(n-2);
return cache[n];
}
}
}
}
function FibonacciMemoizedIter(n) {
let answer = [0,1];
for(let i=2; i<=n; i++) {
answer.push(answer[i-1]+answer[i-2])
}
return answer.pop();
}
const MemoizedFibonacci = FibonacciMemoized();
console.log(MemoizedFibonacci(36));
console.log(FibonacciMemoizedIter(36));
console.log("we did " + calculations + " calulations" );