Program C ++ pro obrácení věty pomocí rekurze

Tento program vezme větu od uživatele a obrátí ji pomocí rekurze. Tento program nepoužívá řetězec k převrácení věty nebo uložení věty.

Abychom porozuměli tomuto příkladu, měli byste znát následující programovací témata C ++:

  • Funkce C ++
  • Typy uživatelsky definovaných funkcí v C ++
  • C ++ rekurze
  • C ++ if, if … else a Nested if … else

Příklad: Obrátit větu pomocí rekurze.

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

Výstup

 Zadejte větu: skvělý program margorp emosewa 

V tomto programu je uživatel vyzván k zadání řetězce, který je uložen v objektu řetězce str.

Potom reverse()se volá funkce, která je rekurzivní funkcí.

Uvnitř této funkce ukládáme velikost vstupního řetězce do proměnné numOfChars.

V prvním volání funkce reverse()vytiskne poslední znak řetězce s kódem:

 cout << str(numOfChars - 1);

Nezapomeňte, že řetězce jsou ve skutečnosti pole znaků , takže každý jednotlivý znak řetězce může být reprezentován jako index pole řetězce str ().

Na dalším řádku se rekurzivní funkce nazývá:

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

Zde substr()dává řetězec až do druhého posledního znaku, který je znovu předán reverse()funkci.

V dalším reverse()volání se vytiskne druhý poslední znak, protože řetězec obsahuje o jeden znak méně než poslední. Poté je jeden znak z posledního znovu odříznut od řetězce a předán reverse()funkci.

To trvá, dokud se délka řetězce nebude rovnat 1, když se vytiskne poslední znak (nebo první znak) a smyčka skončí.

Zajímavé články...