Ricorsione

Guida a Perl
di M. Liverani

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";


© Risorse.net (www.risorse.net)
pagina in versione stampabile:
http://www.risorse.net /perl/ricorsione.asp?print=ok