Ejemplo de fibonacci:
- Código: Seleccionar todo
sub fib {
my $x = shift;
return $x if $x < 2;
fib($x-1) + fib($x-2);
}
print fib(25); # 121393
Naturalmente, a medida que aumentamos los valores, el cálculo se hace cada vez más largo, en parte porque estamos constantemente calculando los mismos valores de fib(x). ¿Por qué tengo que calcular diez veces el valor de fib(5) si se que siempre vale 8?. Debería memorizar ese cálculo después de la primera vez...
Una solución muy sencilla, y esto es una gran ventaja de Perl, es el módulo
Memoize (incluído de base). Agregamos un par de líneas y el programa ahora corre mucho más rápido:
- Código: Seleccionar todo
use Memoize;
memoize 'fib';
sub fib {
my $x = shift;
return 1 if $x < 2;
fib($x-1) + fib($x-2);
}
print fib(25); # 121393