Função Recursiva

Número

Resultado:



Com Closure


Resultado:


Com Yield (apenas Firefox 2)


Resultado:

 
<script type="text/javascript">
window.onload = load
 
function fibo(){
  var ipt = document.getElementById('fibo');
  var saida = document.getElementById('resultado')
 
  entrada = parseInt(ipt.value)
  var result = []
  a = 0
  b = 1
 
  while (b < entrada){
      result.push(b)
      c = a + b
      a = b
      b = c
  }
  saida.innerHTML = result
  return false;
}
 
function fibo2(){
  var a = 0
  var b = 1
  return function(){
    c = a + b
    a = b
    b = c
    return a
  }
}
 
f = fibo2()
resultados = []
function calculacomClosure(){
  resultados.push(f())
  document.getElementById('resultado2').innerHTML = resultados
}
 
function calculacomYield(){
  resultadosyield.push(g.next())
  document.getElementById('saidaYield').innerHTML = resultadosyield
}
 
function load(){
  document.forms[0].onsubmit = function(){return fibo()};
  document.getElementById('comclosure').onclick = calculacomClosure
  document.getElementById('comYield').onclick = calculacomYield
}
</script>
<script type="application/javascript;version=1.7" >
function fib() {
  var i = 0, j = 1;
  while (true) {
    yield i;
    var t = i;
    i = j;
    j += t;
  }
}
 
resultadosyield=[]
var g = fib();
g.next()
 
 
</script>