JSFiddle - React, Tailwind, and code Playground
by Kushal Joshi
JavaScript
var count = 0;
var fibonacci = function (n) {
count++
return n < 2 ? n : fibonacci(n - 1) + fibonacci(n - 2)
};
for (var i = 0; i <= 10; i += 1) {
console.log('// ' + i + ': ' + fibonacci(i) );
};
console.log("fibonacci called " + count + " times");
count = 0;
// record fib numbers in a memo using a closure:
var fibonacci2 = (function ( ) {
var memo = [0, 1]; // This is the memo. That's why it's called memo
// This function is return and closes around the previous memo variable
var fib = function (n) {
count++
var result = memo[n];
if (typeof result !== 'number') {
result = fib(n - 1) + fib(n - 2);
memo[n] = result; // creates the closure by referencing memo
}
return result;
};
return fib;
}( ));
for (var i = 0; i <= 10; i += 1) {
console.log('// ' + i + ': ' + fibonacci2(i) );
};
console.log("fibonacci called " + count + " times");