function fibonacciIterative(number){
fibonacci_sequence = {0:0, 1:1};
let prev = 0;
for(i=2; i<=number; i++){
let prev_minus_1 = i - 2;
let prev = i - 1;
fibonacci_sequence[i] = fibonacci_sequence[prev_minus_1] + fibonacci_sequence[prev];
}
// console.log(fibonacci_sequence);
console.log(number + " => " + fibonacci_sequence[number]);
}
let recursiveCount = 0;
function fibonacciRecursive(number) {
recursiveCount++;
if (number < 2) {
return number;
}
return fibonacciRecursive(number-2) + fibonacciRecursive(number-1);
}
function fibonacciIterative2(number) {
let answer = 0;
let prev = 0;
let temp = 0;
for (let i = 0; i <= number; i++) {
temp = answer;
answer = answer + prev;
prev = temp;
if (i === 1) { answer = 1 }
}
console.log(number + " => " + answer);
}
let memoizedCount = 0;
function fibonacciMemoized(n) {
let cache = {};
return function fibonacci(n) {
memoizedCount++;
if (n < 2) {
return n;
}
if (n in cache) {
return cache[n];
} else {
cache[n] = fibonacci(n-1) + fibonacci(n-2);
return cache[n];
}
}
}
fibonacciIterative2(4);
fibonacciIterative(10);
console.log("10 => " + fibonacciRecursive(10));
fibonacciIterative(11);
console.log("11 => " + fibonacciRecursive(11));
fibonacciIterative2(11);
const fibonacci = fibonacciMemoized();
console.log("With memoization: " + fibonacci(11));
console.log("recursiveCount: " + recursiveCount);
console.log("memoizedCount: " + memoizedCount);