Probleme de recursivite

[Résolu]
Signaler
Messages postés
29
Date d'inscription
mercredi 27 octobre 2004
Statut
Membre
Dernière intervention
17 août 2007
-
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
-
Salut, je n arrive pas a comprendre le pourquoi de ce que le programme suivant renvoie :


#include <stdlib.h>
#include <stdio.h>
#include <conio.h>


void recur (int, int);


main()
{
////////////////////////////////////////////////////
recur(1,3);

system("PAUSE");
////////////////////////////////////////////////////
}


void recur (int i, int nb)
{
if (i<=nb)
{
recur(i+1,nb);
printf("%d\n",i);
recur(i+1,nb);
}
}

Le programme renvoie

3
2
3
1
3
2
3
Merci pour votre aide

3 réponses

Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
29
La pile d'appel déroule ensuite sur ton second recur.

ciao...
BruNews, MVP VC++
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
29
Cause du 1er appel 'recur' tu ne passes au sprintf que quand la valeur arrive au max, rien que du normal, ensuite ç a déroule en suivant le même schéma.
Fais le déroulement sur papier et tu verras ce qui se passe.

ciao...
BruNews, MVP VC++
Messages postés
29
Date d'inscription
mercredi 27 octobre 2004
Statut
Membre
Dernière intervention
17 août 2007

Je l ai deja fais, mais je trouve pas ca, au faite je n'arrive pas a comprendre pourquoi apres l'apel recursif ( recur) on peut avoir un 2, ou un 1 qui s'affiche alors que comme tu l as dis la valeur est incremente au maximum a chaque fois, c'est a dire 3 ?