Probleme de recursivite

Résolu
Anysse Messages postés 29 Date d'inscription mercredi 27 octobre 2004 Statut Membre Dernière intervention 17 août 2007 - 23 oct. 2005 à 18:38
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 23 oct. 2005 à 20:18
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

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
23 oct. 2005 à 20:18
La pile d'appel déroule ensuite sur ton second recur.

ciao...
BruNews, MVP VC++
3
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
23 oct. 2005 à 19:04
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++
0
Anysse Messages postés 29 Date d'inscription mercredi 27 octobre 2004 Statut Membre Dernière intervention 17 août 2007
23 oct. 2005 à 20:03
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 ?
0
Rejoignez-nous