JSFiddle - React, Tailwind, and code Playground

by kman007_us

JavaScript

var fastFibonacci, fibonacci, memoized, quickFibonacci;

  fibonacci = function(n) {
    if (n < 2) {
      return n;
    } else {
      return fibonacci(n - 2) + fibonacci(n - 1);
    }
  };

  console.log(fibonacci(4));

  memoized = function(fn) {
    return (function(lookupTable, key, value) {
      return function() {
        key = JSON.stringify(arguments);
        console.log("memoized looking up key...");
        return lookupTable[key] || (lookupTable[key] = fn.apply(this, arguments));
      };
    })({}, void 0, void 0);
  };

  fastFibonacci = memoized(function(n) {
    if (n < 2) {
      return n;
    } else {
      return fastFibonacci(n - 2) + fastFibonacci(n - 1);
    }
  });

console.time('fastFib');
console.log("fastFibonacci(45):", fastFibonacci(45));
console.timeEnd('fastFib');
 
quickFibonacci = memoized(fibonacci); // only the first call uses `memoized`!

console.time('quickFib');
console.log('quickFibonacci(35):', quickFibonacci(35));
console.timeEnd('quickFib');