C ++ program a mondat megfordítására rekurzióval

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.

érdekes cikkek...