[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