Algorytm rekurencyjny kodowany w Perlu

####################################
for ($i=1; $i<=$n; $i++)
{
$fibonacci = fib($i);
print "$fibonacci\n";
}
######################
# DEFINICJA FUNKCJI
sub fib
{
# Pobiera argument funkcji ($i)
my $i = shift;
# Tak zwana baza algorytmu rekurencyjnego (dla $i=1 lub $i=2)
if ($i < 3)
{
my $fibonacci = $i-1;
return $fibonacci;
}
else
{
# Funkcja fib wywołuje rekurencyjnie samą siebie!!!
my $fibonacci = (fib($i-1) + fib($i-2));
return $fibonacci;
}
}
####################################
Algorytm rekurencyjny (N.B. powyższy kod można z całą pewnością zoptymalizować) powinien teoretycznie wygenerować ciąg 1477 liczb Fibonacciego (wliczając w to liczbę zero). Niestety,
w praktyce taka operacja trwałaby niezwykle długo, ponieważ algorytm rekurencyjny ma tendencję do znacznego pochłaniania zasobów procesora w porównaniu z metodą iteracyjną lub arytmetyczną.
Dla przykładu, wygenerowanie zaledwie 35 liczb Fibonacciego przy zastosowaniu przedstawionego powyżej algorytmu rekurencyjnego (maszyna wirtualna Windows 10 x64, Intel Core i7-6700 CPU dual-core, 8 GB RAM) zajmuje aż 30 sekund!
Oczywiście mój serwer WWW pracujący w systemie Linux na znacznie mocniejszej architekturze sprzętowej radzi sobie z tym zadaniem nieco szybciej. Niniejszym zachęcam do testów w okienku powyżej!
Ze względu na zupełnie inną strukturę kodu algorytm iteracyjny wykona tę samą operację w ułamku sekundy!!!