codility fibonacci

JavaScript

var example1 = {
    fibonacci: function (n) {
        if (n === 0) {
            return 0;
        }
        if (n === 1) {
            return 1;
        } else {
            return this.fibonacci(n - 1) + this.fibonacci(n - 2);
        }
    }
};

var example2 = {
    fibonacci: function (n) {
        return function fib(n, a, b) {
            return n > 0 ? fib(n - 1, b, a + b) : a;
        }(n, 0, 1);
    }
};

var example3 = {
    fibonacci: function (n) {
        return Math.round(Math.pow((Math.sqrt(5) + 1) / 2, Math.abs(n)) / Math.sqrt(5)) * (n < 0 && n % 2 ? -1 : 1);
    }
};

var test = function (l) {
    var n;
    console.time('example3');
    for (n = 0; n <= l; n++) {
        example1.fibonacci(n);
    }
    console.timeEnd('example3');
};

test(40);