C ++ programma om een ​​zin om te keren met behulp van recursie

Dit programma neemt een zin van de gebruiker en keert die zin om door middel van recursie. Dit programma gebruikt geen string om de zin om te keren of om de zin op te slaan.

Om dit voorbeeld te begrijpen, moet u kennis hebben van de volgende C ++ programmeeronderwerpen:

  • C ++ Functies
  • Typen door de gebruiker gedefinieerde functies in C ++
  • C ++ recursie
  • C ++ if, if… else en genest if… else

Voorbeeld: draai een zin om met recursie.

 #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)); ) ) 

Uitvoer

 Voer een zin in: margorp emosewa geweldig programma 

In dit programma wordt de gebruiker gevraagd een string in te voeren die is opgeslagen in het stringobject str.

Vervolgens wordt de reverse()functie aangeroepen, wat een recursieve functie is.

Binnen deze functie slaan we de grootte van de invoertekenreeks op in de variabele numOfChars.

Drukt in de eerste functieaanroep reverse()het laatste teken van de string af met de code:

 cout << str(numOfChars - 1);

Anders, strings eigenlijk karakter arrays , zodat elk individueel karakter van een string kan worden voorgesteld als een index van de tekenreeksarray str ().

In de volgende regel wordt de recursieve functie genoemd:

 reverse(str.substr(0, numOfChars - 1));

Hier, substr()geeft de string tot aan de 2e laatste teken, die weer wordt doorgegeven aan de reverse()functie.

Bij de volgende reverse()aanroep wordt het op een na laatste teken afgedrukt omdat de tekenreeks één teken minder bevat dan het laatste. Hierna wordt één teken van de laatste weer afgesneden van de string en doorgegeven aan de reverse()functie.

Dit gaat door totdat de lengte van de string gelijk is aan 1, wanneer het laatste karakter (of het eerste karakter) wordt afgedrukt en de lus eindigt.

Interessante artikelen...