[Perl] recursividad en perl

Salvador Ortiz Garcia sog en msg.com.mx
Mar Mayo 10 22:48:54 CDT 2005


Hablando de recursión en perl, el problema fundamental es que el
optimizador de perl5 no usa "tail recursion". Se supone que perl6
resuelverá el problema.

Y si ademas limitamos el uso de variables en nuestras funciones
recursivas le ahorramos a perl el tener que crear el "stash"
correspondiente en el stack.

Tomando ambos factores en cuenta un ejemplo a la lisp:

sub factorial {
    sub iter {
	$_[0] < 1 ? $_[1] : iter($_[0] - 1, $_[0] * $_[1]);
    }
    iter($_[0], 1)
}


Saludos a la banda perlera.

On Tue, 2005-05-10 at 18:20 -0500, Gunnar Wolf wrote:
> Ivan Chavero dijo [Mon, May 09, 2005 at 03:07:15PM -0600]:
> > Gunnar ilustra muy bién los problemas de tu script. 
> > solamenter un comentario, he hecho algunas pruebas con recursividad en
> > perl y no es precísamente su fuerte, lo bueno es que TIMTOWTDI y hay
> > alternativas a la recursividad:
> > (...)
> 
> El punto que menciona Ivan es muy importante: El peso adicional que le
> impone a tu programa el hacer una gran cantidad de llamadas a funcion
> no es despreciable, ademas de que siempre que usas una logica basada
> en incrementar el stack de funciones consumes memoria de una manera
> endemoniada, y corres el riesgo de romper tu stack (aunque, si, en
> Perl este riesgo se aminora). Me uno a la recomendacion de Ivan.

-- 
Salvador Ortiz Garcia <sog en msg.com.mx>
Matías Software Group



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