Ez a program vesz egy mondatot a felhasználótól, és rekurzióval megfordítja ezt a mondatot. Ez a program nem használ karakterláncot a mondat megfordítására vagy a mondat tárolására.
A példa megértéséhez ismernie kell a következő C ++ programozási témákat:
- C ++ függvények
- A felhasználó által definiált függvények típusai a C ++ nyelven
- C ++ rekurzió
- C ++ ha, ha… más, és beágyazott, ha … más
Példa: Fordítson meg egy mondatot rekurzióval.
#include using namespace std; // function prototype void reverse(const string& a); int main() ( string str; cout << " Please enter a string " << endl; getline(cin, str); // function call reverse(str); return 0; ) // function definition void reverse(const string& str) ( // store the size of the string size_t numOfChars = str.size(); if(numOfChars == 1) ( cout << str << endl; ) else ( cout << str(numOfChars - 1); // function recursion reverse(str.substr(0, numOfChars - 1)); ) )
Kimenet
Írjon be egy mondatot: margorp emosewa awesome program
Ebben a programban a felhasználót arra kérik, hogy adjon meg egy karakterláncot, amelyet az string karakterobjektum tárol.
Ezután a reverse()
függvényt hívjuk, amely rekurzív függvény.
Ebben a függvényben tároljuk a bemeneti karakterlánc méretét a numOfChars változóban.
Az első függvényhívásban reverse()
kinyomtatja a karakterlánc utolsó karakterét a kóddal:
cout << str(numOfChars - 1);
Ne feledje, hogy a karakterláncok valójában karaktertömbök , így a karakterlánc minden egyes karaktere az str () karakterlánc tömbjének indexeként ábrázolható.
A következő sorban a rekurzív függvényt hívjuk:
reverse(str.substr(0, numOfChars - 1));
Itt substr()
adja meg a karakterláncot a 2. utolsó karakterig, amelyet újra átadunk a reverse()
függvénynek.
A következő reverse()
hívásban a 2. utolsó karakter kerül kinyomtatásra, mert a karakterlánc eggyel kevesebb karaktert tartalmaz az utolsóból. Ezt követően az utolsó egy karaktert ismét levágják a karakterláncról, és átadják a reverse()
függvénynek.
Ez addig tart, amíg a karakterlánc hossza meg nem egyezik az 1-vel, amikor az utolsó karakter (vagy az első karakter) ki van nyomtatva, és a hurok véget ér.