fork download
  1. <?php
  2. function fibonacci($n) {
  3. static $cache = array();
  4. static $prox = 3;
  5. $cache[0] = 0;
  6. $cache[1] = 1;
  7. $cache[2] = 1;
  8. if ($n < $prox) {
  9. echo "cache -> "; //está aqui só para mostrar que entrou aqui
  10. return $cache[$n];
  11. }
  12. for ($i = $prox; $i <= $n; $i++) $cache[$i] = $cache[$i - 1] + $cache[$i - 2];
  13. echo $i - $prox . " passos -> "; //está aqui só para mostrar que entrou aqui
  14. $prox = $n + 1;
  15. return $cache[$n];
  16. }
  17. echo fibonacci(5) ."\n";
  18. echo fibonacci(20) ."\n";
  19. echo fibonacci(100) ."\n";
  20. echo fibonacci(10) ."\n";
  21. echo fibonacci(100) ."\n";
  22. echo fibonacci(120) ."\n";
  23.  
  24. //https://pt.stackoverflow.com/q/104014/101
Success #stdin #stdout 0.02s 24468KB
stdin
Standard input is empty
stdout
3 passos -> 5
15 passos -> 6765
80 passos -> 3.5422484817926E+20
cache -> 55
cache -> 3.5422484817926E+20
20 passos -> 5.358359254991E+24