fork download
  1. use Memoize;
  2. memoize('fib2');
  3.  
  4. print "Memoization is fun!\n";
  5.  
  6. sub fib1 {
  7. print "Called fib1($_[0])\n";
  8. my $n = $_[0];
  9. if ($n <= 0) {
  10. return 0;
  11. }
  12. elsif ($n == 1) {
  13. return 1;
  14. }
  15. else {
  16. return fib1($n-1) + fib1($n-2);
  17. }
  18. }
  19. print fib1(5), "\n";
  20.  
  21. sub fib2 {
  22. print "Called fib2($_[0])\n";
  23. my $n = $_[0];
  24. if ($n <= 0) {
  25. return 0;
  26. }
  27. elsif ($n == 1) {
  28. return 1;
  29. }
  30. else {
  31. return fib2($n-1) + fib2($n-2);
  32. }
  33. }
  34. print fib2(30), "\n";
Success #stdin #stdout 0.02s 5628KB
stdin
Standard input is empty
stdout
Memoization is fun!
Called fib1(5)
Called fib1(4)
Called fib1(3)
Called fib1(2)
Called fib1(1)
Called fib1(0)
Called fib1(1)
Called fib1(2)
Called fib1(1)
Called fib1(0)
Called fib1(3)
Called fib1(2)
Called fib1(1)
Called fib1(0)
Called fib1(1)
5
Called fib2(30)
Called fib2(29)
Called fib2(28)
Called fib2(27)
Called fib2(26)
Called fib2(25)
Called fib2(24)
Called fib2(23)
Called fib2(22)
Called fib2(21)
Called fib2(20)
Called fib2(19)
Called fib2(18)
Called fib2(17)
Called fib2(16)
Called fib2(15)
Called fib2(14)
Called fib2(13)
Called fib2(12)
Called fib2(11)
Called fib2(10)
Called fib2(9)
Called fib2(8)
Called fib2(7)
Called fib2(6)
Called fib2(5)
Called fib2(4)
Called fib2(3)
Called fib2(2)
Called fib2(1)
Called fib2(0)
832040