|
In Perl possono anche essere definite
delle funzioni ricosive, ossia delle funzioni che possono
richiamare se stesse per produrre il risultato desiderato.
Ad esempio supponiamo di voler
calcolare il fattoriale di un numero intero; il fattoriale di n
è quella funzione che restituisce il prodotto dei numeri da 2 ad n.
Possiamo definire due subroutine diverse per calcolare il fattoriale di
$n$, una iterativa ed una ricorsiva:
#!/usr/local/bin/perl
# fattoriale.pl
sub fattoriale_1 {
local($i, $n, $f);
$n = shift(@_);
$f = $n;
for ($i=$n -1; $i>1; $i--) {
$f = $f*$i;
}
return($f);
}
sub fattoriale_2 {
local($n) = shift(@_);
($n == 1) && return(1);
return($n * &fattoriale_2($n-1));
}
$n = <STDIN>;
$f1 = &fattoriale_1($n);
$f2 = &fattoriale_2($n);
print "fattoriale iterativo = $f1\n";
print "fattoriale ricorsivo = $f2\n"; |
Lezione
successiva =>
Torna
all'indice
|