C ++ program za poništavanje rečenice pomoću rekurzije

Ovaj program uzima rečenicu od korisnika i obrće je rečenicom pomoću rekurzije. Ovaj program ne koristi niz za preokretanje rečenice ili spremanje rečenice.

Da biste razumjeli ovaj primjer, trebali biste imati znanje o sljedećim temama programiranja na C ++:

  • C ++ funkcije
  • Vrste korisnički definiranih funkcija u C ++
  • C ++ Rekurzija
  • C ++ ako, ako … drugo i ugniježđeno ako … drugo

Primjer: Obrni rečenicu pomoću rekurzije.

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

Izlaz

 Unesite rečenicu: strašan program margorp emosewa 

U ovom programu od korisnika se traži da unese niz koji je pohranjen u objekt niza str.

Zatim reverse()se poziva funkcija koja je rekurzivna.

Unutar ove funkcije veličinu ulaznog niza pohranjujemo u varijablu numOfChars.

U prvom pozivu funkcije reverse()ispisuje zadnji znak niza s kodom:

 cout << str(numOfChars - 1);

Zapamtite da su nizovi zapravo nizovi znakova , tako da se svaki pojedinačni znak niza može predstaviti kao indeks niza niza str ().

U sljedećem se retku rekurzivna funkcija naziva:

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

Ovdje substr()daje niz do 2. zadnjeg znaka, koji se ponovo prosljeđuje reverse()funkciji.

U sljedećem reverse()pozivu ispisuje se drugi zadnji znak jer niz sadrži jedan znak manje od zadnjeg. Nakon toga, jedan znak iz zadnjeg ponovno je odsječen iz niza i proslijeđen reverse()funkciji.

To traje sve dok duljina niza ne bude jednaka 1, kada se ispiše završni znak (ili prvi znak) i petlja završi.

Zanimljivi članci...