JSFiddle - React, Tailwind, and code Playground
by mgibsonbr
HTML
<input><button>Calcular</button>
<div id="out"></div>
JavaScript
var fib = function(classe, soma) {
var sequencia = [new classe(1), new classe(1)];
var serie = [new classe(1), new classe(2)];
function atualiza(n) {
var len = sequencia.length;
while ( n > len ) {
sequencia.push(soma(sequencia[len-1], sequencia[len-2]));
serie.push(soma(serie[len-1], sequencia[len]));
len++;
}
}
return {
n_esimo:function(n) { atualiza(n); return sequencia[n-1]; },
sequencia:function(n) { atualiza(n); return sequencia.slice(0,n); },
serie:function(n) { atualiza(n); return serie[n-1]; }
}
};
var fibn = fib(Number, function(a,b) { return new Number(a + b); });
$("button").click(function() {
var n = parseInt($("input").val(), 10);
$("#out").append("<p>" + fibn.sequencia(n) + "</p>");
});