FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para CA-Clipper Limite en la recursividad
Posts: 33
Joined: Thu Aug 24, 2006 03:14 AM
Limite en la recursividad
Posted: Wed Nov 22, 2006 03: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

TEST(0)

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






Posts: 219
Joined: Mon Dec 26, 2005 07:25 PM
Limite en la recursividad
Posted: 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

Continue the discussion