Limite en la recursividad

Limite en la recursividad

Postby creswinman » Wed Nov 22, 2006 3:25 pm

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  Expand view  RUN
TEST(0)

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







Code: Select all  Expand view  RUN
User avatar
creswinman
 
Posts: 33
Joined: Thu Aug 24, 2006 3:14 am
Location: mexico

Postby manuramos » Thu Nov 23, 2006 12:48 pm

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
manuramos
 
Posts: 219
Joined: Mon Dec 26, 2005 7:25 pm
Location: Jerez de la Frontera (Spain)


Return to FiveWin para CA-Clipper

Who is online

Users browsing this forum: No registered users and 33 guests