C ++ - Programm zum Umkehren eines Satzes mithilfe der Rekursion

Dieses Programm nimmt einen Satz vom Benutzer und kehrt diesen Satz durch Rekursion um. Dieses Programm verwendet keine Zeichenfolge, um den Satz umzukehren oder den Satz zu speichern.

Um dieses Beispiel zu verstehen, sollten Sie die folgenden C ++ - Programmierthemen kennen:

  • C ++ - Funktionen
  • Arten von benutzerdefinierten Funktionen in C ++
  • C ++ Rekursion
  • C ++ if, if… else und Nested if… else

Beispiel: Kehren Sie einen Satz mit Rekursion um.

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

Ausgabe

 Geben Sie einen Satz ein: margorp emosewa awesome program 

In diesem Programm wird der Benutzer aufgefordert, eine Zeichenfolge einzugeben, die im Zeichenfolgenobjekt str gespeichert ist.

Dann wird die reverse()Funktion aufgerufen, die eine rekursive Funktion ist.

Innerhalb dieser Funktion speichern wir die Größe der Eingabezeichenfolge in der Variablen numOfChars.

Gibt beim ersten Funktionsaufruf reverse()das letzte Zeichen der Zeichenfolge mit dem folgenden Code aus:

 cout << str(numOfChars - 1);

Denken Sie daran, dass Zeichenfolgen tatsächlich Zeichenarrays sind , sodass jedes einzelne Zeichen einer Zeichenfolge als Index des Zeichenfolgenarrays str () dargestellt werden kann.

In der nächsten Zeile heißt die rekursive Funktion:

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

Hier wird substr()die Zeichenfolge bis zum vorletzten Zeichen angegeben, das erneut an die reverse()Funktion übergeben wird.

Beim nächsten reverse()Aufruf wird das vorletzte Zeichen gedruckt, da die Zeichenfolge ein Zeichen weniger vom letzten enthält. Danach wird ein Zeichen vom letzten wieder von der Zeichenfolge abgeschnitten und an die reverse()Funktion übergeben.

Dies geht so lange, bis die Länge der Zeichenfolge gleich 1 ist, wenn das letzte Zeichen (oder das erste Zeichen) gedruckt wird und die Schleife endet.

Interessante Beiträge...