Limite en la recursividad

Post Reply
User avatar
creswinman
Posts: 33
Joined: Thu Aug 24, 2006 3:14 am
Location: mexico
Contact:

Limite en la recursividad

Post by creswinman »

Hola estoy utilizando rutinas recursivas para recorrer arboles genealogicos
http://www.genealogia.com.mx el problema es que cuando llamo a una rutina mas de 13 veces marca el error

EVAL STACK FAULT

Estoy usando blinker 7

Se supone que el blinker procedure depth 30
indicaria cuantas veces se pueden anidar procesos o funciones
la verdad es que si le pongo 0,30 o 100 se comporta igual
siempre truena en 15

Ejemplo de una rutina para pruebas

Code: Select all

TEST(0)

FUNCTION TEST()
PARAM n
n:=n+1
Msginfo(n)
Test(n)




manuramos
Posts: 219
Joined: Mon Dec 26, 2005 7:25 pm
Location: Jerez de la Frontera (Spain)

Post by manuramos »

La funcion está muy bien, pero tendràs que ponerle un limite a la recursividad para que no se ejecute indefinidamente, (varios miles de veces por segundo)

Por ejemplo:

IF n < 31
Test(n)
ENDIF
RETURN (n)

Además, a cada vez que entras te crea el PARAM n (unos pocos de miles), mucho uso de memoria.
Porqué no creas una sola varable "n" y la pasa por referencia. O una variable PUBLICa que no tiene que pasar ni por parámetro ni nada. Mucho ahorro de memoria y la recursividad puede ser indefinida sin aumentar la memoria (creo que ahí está tu problema).

Un saludo.
Nos Gusta Programar
Post Reply