Fórumok
A probléma a következő: van egy függvény, aminek egy vektor a visszatérési értéke:
vector<string> fuggveny (string input)
{
vector<string> visszateres;
//Dolgok, visszateres.push_back("valami");
return visszateres;
}
Ezzel eddig nincs is gond, de a függvény bizonyos esetekben meghívja önmagát. És ilyenkor újra létrehozza
vector<string> visszateres
-t, és visszatéréskor csak az utolsó futás eredménye lesz benne.
A kérdés: hogy lehetne, hogy minden hozzáadott elem megmaradjon a vektorban, és a függvény ezzel térjen vissza?
Hozzászólások
Ha jol ertem a "
" kozott vannak hivasok onmagara. Mi lenne, ha nem lokalis valtozoban gyujtened ossze a sztringeket? Parameterkent adnad at a "
"-t, oda gyujtened oket. "
"
Működik, örök hála. (Fél órát görcsöltem vele, mire rájöttem, hogy a saját magát meghívó résznél nem adtam át neki a vektort...)
Mivel vectort visszatérési értéknek adni eleve teljesen gáz (tripla másolás), pláne rekurzív függvénnyel, tényleg a referenciás módszer a legjobb.
Legalább még azt a kódot beírhattad volna még, hogy hogyan hívja rekurzívan önmagát, és mit csinál önmaga visszatérési értékével...
Semmi extra:
vector fuggveny (string input)
{
vector visszateres;
// Dolgok, visszateres.push_back("valami");
if(rekurzio) fuggveny(megfeleloInput);
return visszateres;
}
Hja, hát ha a visszatérési értéket csak úgy lazán eldobja, akkor ne csodálkozz...
Nem csodálkoztam rajta, tudtam hogy mi lesz, csak egy megoldást kérdeztem (és kaptam).
Bocs, úgy látszik túl optimista voltam, amikor feltételeztem, hogy a visszatérési értékkel kezdesz valamit, és annak ellenére nem működik.
Köszönöm építő jellegű hozzászólásaidat.
1.
static vector visszateres;
De ekkor nem torlodik a visszateres, kov hivaskor bajaid lehetnek.
2. nem a fugvenyben deklaralod.
3. fugvenynek argumentumava teszed a visszaterest, mint referencia
Ha ragszkodsz az egy argumentumhoz, akkor az egy argumentumos hivja a ket argumentumosat, es ket argumentumos is a ketargumentumosat
4. ird meg nem rekurziva, ritkan eri meg rekurziv fugvenyeket hasznalni.
A harmadik lett a megoldás (és ez azon ritka problémák egyike, amikor rekurzió szükséges [könyvtárszerkezet bejárása]).