Fibonacci

by secretgspot

HTML

<div id="numbers"></div>
<div id="comments"></div>

JavaScript

$(function() {
    // What is the bug in the output of this program & how can it be solved?
    // What three numbers are not remembered
    // How many recursions, how many remembers compared to n?
    var getFibonacci = function() {
        var numbers = [],
            recursed = 0,
            remembered = 0,
            fibonacci = function(numIn) {       
                
                if (arguments.length > 1) {                    
                    return $("#comments").append("<br/>" + "Recursed " + recursed + 
                                            " times.<br/>Remembered " + remembered + " times.");
                }
                               
                if (typeof numbers[numIn] === 'number') {
                    ++remembered;   
                    $("#comments").append("Remembering " + numbers[numIn] + "<br/>");                
                    return numbers[numIn];               
                } 
                
                ++recursed;
                numbers[numIn] = numIn < 2 ? numIn : fibonacci(numIn - 2) + fibonacci(numIn - 1);
                $("#numbers").append(numbers[numIn] + " ");
                return numbers[numIn];
            };
        return fibonacci;
    },
        i,
        fibonacci = getFibonacci();
    fibonacci(666);
    fibonacci("want","count");    
});