ls -1TörténelemHUP adás-vételNépszerű témákNépszerű fórum témákHardverLinux Weekly NewsLinux DevicesFreeBSD Project NewsOpenBSD Journal
|
C++, rekurzió, visszatérési érték [megoldva]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 A kérdés: hogy lehetne, hogy minden hozzáadott elem megmaradjon a vektorban, és a függvény ezzel térjen vissza?
»
|
KeresésNavigációBelépésÁllásajánlatokHWSWFriss blogbejegyzésekHUP napi hírlevélLegfrissebb HUP videókLegfrissebb HUP képekLegfrissebb HUP dokumentumokSzavazásA mostani munkahelyemen ... munkaköri leírást ... 30 napon belül kaptam ... 40% ... 30 napon túl kaptam ... 11% ... nem kaptam .... 26% (nem dolgozok) 12% egyéb 10% Összes szavazat: 401
Új felhasználók
InformációKövess minket!Partnerünk |
Ha jol ertem a "
//Dolgok" kozott vannak hivasok onmagara. Mi lenne, ha nem lokalis valtozoban gyujtened ossze a sztringeket? Parameterkent adnad at a "visszateres"-t, oda gyujtened oket. "void fuggveny (vector<string>& visszateres, string input)"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) visszateres;
{
vector
// 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. visszateres;
static vector
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]).