orbb
Messages postés17Date d'inscriptiondimanche 25 juillet 2004StatutMembreDernière intervention20 juillet 2007
-
19 déc. 2006 à 12:08
orbb
Messages postés17Date d'inscriptiondimanche 25 juillet 2004StatutMembreDernière intervention20 juillet 2007
-
19 déc. 2006 à 13:42
Bonjour, voici une fonction récursive :
void m(DWORD i, char stem [10] = "")
{
if (i < 2)
{
stem[i] = 'a';
m(i+1, stem);
// ici
stem[i] = 'b';
m(i+1, stem);
}
return;
}
elle est appelée dans le programme principale par : m(0, "zzz");
mon probleme, la variable "stem" n'est pas restitué apres retour d'un apel recursif (où jai placé le commentaire, par exemple), alors que la variable "i" est bien restitué...
commment faire pour regler ce probleme ?
merci
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 19 déc. 2006 à 12:40
Normalement, ca ne devrait pas compiler, car "zzz" est une chaine constante.
Mais bon ca passe, et dans ce cas on ne sait pas trop ce qui peut se passer. En tous cas ce n'est pas surprenant que le chaine soit modifiée, car tu passes son adresse, elle est donc directement modifiée
orbb
Messages postés17Date d'inscriptiondimanche 25 juillet 2004StatutMembreDernière intervention20 juillet 2007 19 déc. 2006 à 13:09
merci, j'ai essayé la 2ème possibilité vu quelle correspond a ce que je veut faire, mais ca me donne une erreur a la compilation : parametre non reconnu ligne 5
voila le source, vous etes sure qu'on peut utiliser string comme parametre ?
orbb
Messages postés17Date d'inscriptiondimanche 25 juillet 2004StatutMembreDernière intervention20 juillet 2007 19 déc. 2006 à 13:42
merci beaucoup, je vient de tester en ajoutant une messagebox, le resultat est correcte.
void m(DWORD i, string stem)
{
if (i < 2)
{
stem[i] = 'a';
m(i+1, stem);
MessageBox(NULL, stem.data(), "Test", MB_OK);
stem[i] = 'b';
m(i+1, stem);
}
return;
}
merci encore
bye