JSFiddle - React, Tailwind, and code Playground

by Leandro Amorim

HTML

<div>
    <input id="entrada" type="text" value="1476" />
    <input id="run" type="button" value="Executar" />
</div>
<div id="f1"></div>
<div id="f2"></div>
<div id="f3"></div>
<div id="f4"></div>
<div id="f5"></div>
<div id="f6"></div>

JavaScript

function fib1(n) {
    return ""; //trava para não executar script muito pesado
    if (n < 2) return n;
    return fib1(n - 1) + fib1(n - 2);
}

function fib2(n) {
    var i, f = [0, 1];
    for (i = 2; i <= n; i++) f.push(f[i - 1] + f[i - 2]);
    return f[n];
}

function fib3(n) {
    var i = 1,
        j = 0,
        t = j,
        k = i;
    for (; k++ <= n; j = (t = i + (i = j)));
    return j;
}

function fib4(n) {
    var F = [
        [1, 1],
        [1, 0]
    ];
    if (n <= 0) return 0;
    for (var i = 2; i <= (n - 1); i++)
    F = [
        [F[0][0] + F[0][1], F[0][0]],
        [F[1][0] + F[1][1], F[1][0]]
    ]

    return F[0][0];
}

function fib5(n) {
    if (n == 0) return 0;
    var F = [
        [1, 1],
        [1, 0]
    ];

    function exec(i) {
        if (i == 0 || i == 1) return;
        exec(parseInt(i / 2));
        F = [
            [F[0][0] * F[0][0] + F[0][1] * F[1][0], F[0][0] * F[0][1] + F[0][1] * F[1][1]],
            [F[1][0] * F[0][0] + F[1][1] * F[1][0], F[1][0] * F[0][1] + F[1][1] * F[1][1]]
        ];
        if (i % 2 != 0) F = [
            [F[0][0] + F[0][1], F[0][0]],
            [F[1][0] + F[1][1], F[1][0]]
        ]
    }
    exec(n - 1);
    return F[0][0];
}

function fib6(n) {
    var inverseSqrt5 = 0.44721359549995793928183473374626;
    var phi = 1.6180339887498948482045868343656;
    return Math.floor(Math.pow(phi, n) * inverseSqrt5 + 0.5);
}

$(

function () {

    $("#run").on('click', function () {
        var n = parseInt($("#entrada").val());
        var t1 = ""; //fib1(n);
        var t2 = fib2(n);
        var t3 = fib3(n);
        var t4 = fib4(n);
        var t5 = fib5(n);
        var t6 = fib6(n);
        console.log(t1);
        console.log(t2);
        console.log(t3);
        console.log(t4);
        console.log(t5);
        console.log(t6);
        $("#f1").html("fib1 = " + t1);
        $("#f2").html("fib2 = " + t2);
        $("#f3").html("fib3 = " + t3);
        $("#f4").html("fib4 = " + t4);
      ...