[bcn-pm] Evitar recursión profunda

Jordi Delgado jdelgado a lsi.upc.edu
dij jul 30 07:38:57 PDT 2009


Buenas,

No estoy seguro de entender muy bien tu problema, pero si
lo que te ocurre es una recursion "descontrolada" (que no lo
seria si Perl tuviese optimizada la tail recurison a la Scheme)
sugiero pasar el algoritmo a iterativo y ver donde esta el 
problema. Ya sabes que esencialmente 
recursividad = iteracion + pila
asi que sustituyendo una cosa por la otra igual tienes mas claro
lo que ocurre. Sospecho que la solucion sera del estilo de lo
que tu comentas al final (con s/lista/pila/).

No se si esto sera muy util... 

Salud!

Jordi


> Al generar eventos desde dentro de una subrutina resulta que me acaba 
> dando este warning:
> Deep recursion on subroutine "main::generation" at 
> /usr/lib/perl5/vendor_perl/5.10.0/i386-linux-thread-multi/Tk/Submethods.pm 
> line 19.
> 
> ¿Se puede evitar de alguna forma? El problema es que al hacer:
> sub generation {
>   # Cosas aquí
>    $canvas->eventGenerate( '<<Gen>>' );
> }
> 
> Y ese evento estar ligado a la misma subrutina, al parecer lo llama 
> desde ese stack frame o lo que sea. ¿Hay forma de evitarlo?
> 
> Quizás no estoy haciendo las cosas bien; lo que quiero es ejecutar una 
> cosa detrás de otra, y al terminar de ejecutarse generation que se 
> vuelva a ejecutar. ¿Quizás debería simplemente generar una lista de 
> eventos que llamen secuencialmente a generation?
> 
> Saludos
> 
> JJ
> _______________________________________________
> llista dels Barcelona-pm
> Barcelona-pm at pm.org
> http://mail.pm.org/mailman/listinfo/barcelona-pm
> BCN Perl Mongers: http://barcelona.pm.org


Més informació sobre la llista de correu Barcelona-pm