[Perl] recursividad en perl

Gunnar Wolf gwolf en gwolf.org
Mar Mayo 10 18:23:01 CDT 2005


Max de Mendizábal dijo [Mon, May 09, 2005 at 01:43:35PM -0500]:
> Todos los lenguajes modernos tienen recursión, nada más hay que aprender 
> a usarla. Ya Gunnar te contestó varias preguntas, mi versión es la siguiente
> 
> #/usr/bin/perl -w
> 
> sub factorial
> {
>         my $num = shift @_ || 0;
>         if ($num != 1) {
>                 return $num * factorial($num-1);
>         }
>         1;
> }
> 
> print factorial(5);
> print "\n";

No nos hace da~no ser un poquito mas cuidadosos de lo a todas luces
necesario :-)

Que pasa si le das, con tu funcion, factorial(-1)? Pues... Nunca vas a
llegar a que $num == 1, por lo cual nunca vas a caer en la condicion
base que llevaria el ciclo a romperse. En estos casos es siempre bueno
comparar con '1 o cualquier cosa inferior', no 1 a secas.

Saludos,

-- 
Gunnar Wolf - gwolf en gwolf.org - (+52-55)1451-2244 / 5554-9450
PGP key 1024D/8BB527AF 2001-10-23
Fingerprint: 0C79 D2D1 2C4E 9CE4 5973  F800 D80E F35A 8BB5 27AF


Más información sobre la lista de distribución Perl