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
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
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 ?
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