Program w C ++ do odwracania zdania przy użyciu rekursji

Ten program pobiera zdanie od użytkownika i odwraca to zdanie za pomocą rekurencji. Ten program nie używa ciągu znaków do odwrócenia zdania lub jego przechowywania.

Aby zrozumieć ten przykład, powinieneś znać następujące tematy programowania w języku C ++:

  • Funkcje C ++
  • Typy funkcji zdefiniowanych przez użytkownika w C ++
  • Rekursja w C ++
  • C ++ if, if… else i Nested if… else

Przykład: odwróć zdanie za pomocą rekurencji.

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

Wynik

 Wpisz zdanie: margorp emosewa awesome program 

W tym programie użytkownik jest proszony o wprowadzenie ciągu znaków, który jest przechowywany w obiekcie string str.

Następnie reverse()wywoływana jest funkcja, która jest funkcją rekurencyjną.

Wewnątrz tej funkcji przechowujemy rozmiar ciągu wejściowego w zmiennej numOfChars.

W pierwszym wywołaniu funkcji reverse()wyświetla ostatni znak ciągu z kodem:

 cout << str(numOfChars - 1);

Pamiętaj, że łańcuchy są w rzeczywistości tablicami znaków , więc każdy pojedynczy znak ciągu może być reprezentowany jako indeks tablicy ciągów str ().

W następnym wierszu funkcja rekurencyjna nazywa się:

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

Tutaj substr()daje ciąg do drugiego ostatniego znaku, który jest ponownie przekazywany do reverse()funkcji.

W następnym reverse()wywołaniu drukowany jest przedostatni znak, ponieważ ciąg zawiera o jeden znak mniej od ostatniego. Następnie jeden znak od ostatniego jest ponownie odcinany od łańcucha i przekazywany do reverse()funkcji.

Dzieje się tak do momentu, gdy długość łańcucha będzie równa 1, kiedy ostatni znak (lub pierwszy znak) zostanie wydrukowany i pętla się zakończy.

Interesujące artykuły...