cs_darkwhite
Messages postés133Date d'inscriptionvendredi 17 novembre 2000StatutMembreDernière intervention29 avril 2008
-
8 mai 2007 à 10:41
luhtor
Messages postés2023Date d'inscriptionmardi 24 septembre 2002StatutMembreDernière intervention28 juillet 2008
-
8 mai 2007 à 14:38
Salut a tous,
Je viens de commencer mon initiation au fonction recursives mais il y a une chose qui m'echape dans ce code simple
> Et le code affiche debut1 debut2 debut3 fin1 fin2 fin3
je comprends que le code que le code affiche debut1 debut2 debut3 fin1 car une fois que nb-affichage>1 n'est plus vrai
la fonction n'est plus rappelée. Cependant pour moi apres le dernier printf la fonction a executé tout son code ????
Elle ne peut plus etre rappelée puisque nb-affichage<1 ????
luhtor
Messages postés2023Date d'inscriptionmardi 24 septembre 2002StatutMembreDernière intervention28 juillet 20086 8 mai 2007 à 11:04
La fonction n'est pas rappelé, mais ta la fonction s'appelle elle meme. Mais que la fonction s'appelle elle meme ou qu'elle en appelle une autre, ca change rien: lorsque la fonction appelé se termine, la code continue à la ligne ou il était arrivé avant l'appel de la fonction.
<= la t'es bien d'accord, on verra : "début 1 début 2 fin 2 fin 1".
Bas c'est ce qu'il se passe dans ton cas. Récursif c'est encore un grand mot pour pas grand chose:
Simplement la fonction que t'appelle, c'est la meme que celle ou tu te trouves.
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 8 mai 2007 à 11:36
Ouh la, il faut bien attirer l'attention des débutants sur une différence fondamentale entre l'appel d'une autre fonction et l'appel récursif.
Le mode récursif provoque un empilage continuel sur la stack et NE DEPILERA qu'à la fin (si la stack n'explose pas avant).
luhtor
Messages postés2023Date d'inscriptionmardi 24 septembre 2002StatutMembreDernière intervention28 juillet 20086 8 mai 2007 à 14:38
Evidemment, mais ca n'est qu'une conséquence d'un appel récursive. C'est juste un danger, mais dans le fonctionnement, c'est rigoureuseuement identique à n'importe quel appel de fonction.