# silnia($n) wylicza warto silni dla $n, 
#   wykorzystujc algorytm iteracyjny.
sub silnia {
    my ($n) = shift;
    my ($wynik, $i) = (1, 2);
    for ( ; $i <= $n; $i++) {
        $wynik *= $i;
    }
    return $wynik;
}

# silnia_rekurencyjnie($n) wylicza warto silni dla $n, 
#   wykorzystujc algorytm rekurencyjny.
sub silnia_rekurencyjnie {
    my ($n) = shift;
    return $n if $n <= 2;
    return $n * silnia_rekurencyjnie($n - 1);
}

sub silnia_szacunek {
    return sqrt (6.283185307179586 * $_[0]) *
        (($_[0] / 2.71828182845905) ** $_[0]);
}

