cqui789
Messages postés261Date d'inscriptionjeudi 13 janvier 2005StatutMembreDernière intervention18 mai 2009
-
20 janv. 2005 à 09:29
cqui789
Messages postés261Date d'inscriptionjeudi 13 janvier 2005StatutMembreDernière intervention18 mai 2009
-
20 janv. 2005 à 10:56
J'ai un programme ou j'ai besoin qu'une sub appelle une sub qui
rappelle une sub..... un certain grand nombre de fois. je ne me perd
pas les pedales, il y a toujours un moment ou ca s'arrete et on
retourne a la case depart.
Au bout d'un moment j'ai un message du genre "Stack Full" et j'ai
compris que VB a une limite dans le nombre de retour possibles.
Il ne me faudrait que 30 a 40% en plus pour que mon programme marche a tout les coups.
J'envisage de gerer tout ca moi meme, ne serais-ce que pour le plaisir
de programmer, mais y a-t-il un moyen de prevoir et modifier la taille
de la pile concernee?
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 20 janv. 2005 à 10:47
Les fonctions récursives peuvent toujours être remplacées par des
fonctions linéaires en utilisant au moins une pile en parallèle pour
stocker les données. Bien que ce soit compliqué dans pas mal de cas,
cela évite le problème de pile trop petite.
Pour continuer en récursif et éviter les problèmes de piles, évite de
passer trop de paramètres à ta fonction récursive (ou passe les par
références et non par valeur si possible), et évite de déclarer trop de
variables locales dans ta fonction (préfère un tableau global à la
limite, qui sera stocké sur le tas et non plus dans la pile).
DarK Sidious
Administrateur et reponsable VB/API du site www.ProgOtoP.com
Gobillot
Messages postés3140Date d'inscriptionvendredi 14 mai 2004StatutMembreDernière intervention11 mars 201934 20 janv. 2005 à 10:38
ça arrive souvent quand on fait du récursif, la solution c'est de se limiter en nombre de boucles, en nombre de variables locales, ou de trouver une solution non récursive.