$ time perl -e ' print fibo(99); { my @cache; sub fibo { my $num = shift; unless (defined $cache[$num]) { if ($num < 3) { $cache[$num] = 1; } else { $cache[$num] = fibo($num-1) + fibo($num-2); } } return $cache[$num]; } } ' 2.18922995834555e+20 real 0m0.036s user 0m0.000s sys 0m0.031s