Vous n'êtes pas identifié.
Tiens au fait...
que se passe t'il lorsqu'on appelle toutes un tas de diverses fonctions sans jamais retourner à la fonction appelante?
ca buggue?
Hors ligne
en asm ya pa une istoire de pile?? kan el é pleine sa plante ... nan?
(fo mexcusé si je di d coneri mé c d vage souvenir d'une epoque tré lointène ou g fé un tt peti peu d'asm!lol :mrgreen: )
Hors ligne
je crois bien que cé ca f4kill
Hors ligne
mé en c c pareil?? c pa prevu?
Hors ligne
ya une sorte de piles d' adresse, comme pour les call ( en fait c exactement la meme chose que call, avec gestion des argument en prime!)
Quand on en appelle trop, bamm.. pardonne pas lol
Hors ligne
C pas une "sorte" de pile d'adresse, c bien la pile classique qui est utilisée et remplie avec les adresses de retour et les différents paramètres...
Si on fait trop d'appels de fonction on risque le Stack Overflow effectivement.
Exemple pour les volontaires qui esperent devenir riches:
int DevineLeTierce() { int Tierce = DevineLeTierce(); return Tierce; }
Hors ligne
Simpa l'exemple! :mrd:
Hors ligne
une fonction a réccurence, les plus dangeureuse lol
A propos zavez le droit d' utiliser ce genre de fonctions, mais l' exemple de julien démontre exactement ce qui se passe quand on fait pas gaffe... pour ma part je les utilisent pas.
Hors ligne
c quand meme pratique.
Ce type de programmation est généralement plus lent que de la programmation itérative (boucle for, while) car on fait plus de parcours.
Cela dit pour avoir un stack overflow un appel récursif n'est pas obligé, il suffit de déclarer une grosse allocation dans la pile par exemple:
void main()
{
int sert_a_rien[70000];
}
Je pense que la g100 n'aprécira pas. Ici la variable est déclarée dans la pile, or si j'avais déclarer la variable en static ou en dehors d'une fonction, elle serait déclarée dans le segment de données.
Hors ligne
ça marche parfaitement, mais si tu utilise la variable sert_a_rien ou que tu appelle d' autres fonctions, en effet va y avoir des problemes lol
Hors ligne
une fonction a réccurence, les plus dangeureuse lol
A propos zavez le droit d' utiliser ce genre de fonctions, mais l' exemple de julien démontre exactement ce qui se passe quand on fait pas gaffe... pour ma part je les utilisent pas.
Et oui mais elles sont principalement dangereuses si la condition de récursivité n'est pas bien définie (dans mon exemple y'avait pas de condition lol)
Sinon c assez pratique notamment en POO... Dans sonic une bonne partie de la gestion des objets se base sur la récursivité
D'ailleurs voici un petit exemple tres court mais un peu plus intéressant, c la fonction qui attache aux précédents un nouvel objet qui apparait sur l'écran:
void Objet::Ajoute(Objet* nouveau) // ajout d'un nouvel objet en bout de liste { if (suivant!=NULL) suivant->Ajoute(nouveau); else suivant=nouveau; }
C'est pas plus compliqué que ca!
Hors ligne
un pointeur sur Objet (qui contient l'adresse de l'item suivant a gerer).
Hors ligne