Program C ++ za razveljavitev stavka z uporabo rekurzije

Ta program vzame stavek uporabnika in ga spremeni z uporabo rekurzije. Ta program ne uporablja niza za obračanje stavka ali shranjevanje stavka.

Če želite razumeti ta primer, morate poznati naslednje programske teme C ++:

  • Funkcije C ++
  • Vrste uporabniško določenih funkcij v C ++
  • C ++ Rekurzija
  • C ++ if, if … else in ugnezdeni if ​​… else

Primer: obrnite stavek z uporabo 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)); ) ) 

Izhod

 Vnesite stavek: super program margorp emosewa 

V tem programu je uporabnik pozvan, da vnese niz, ki je shranjen v objektu niza str.

Nato reverse()se pokliče funkcija, ki je rekurzivna funkcija.

V tej funkciji shranimo velikost vhodnega niza v spremenljivko numOfChars.

V prvem klicu funkcije reverse()natisne zadnji znak niza s kodo:

 cout << str(numOfChars - 1);

Ne pozabite, da so nizi dejansko nizov znakov , zato je vsak posamezen znak niza lahko predstavljen kot indeks niza nizov str ().

V naslednji vrstici se rekurzivna funkcija pokliče:

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

Tu substr()daje niz do 2. zadnjega znaka, ki se spet prenese v reverse()funkcijo.

V naslednjem reverse()klicu se natisne 2. zadnji znak, ker niz vsebuje en znak manj od zadnjega. Po tem je en znak iz zadnjega spet odrezan iz niza in poslan reverse()funkciji.

To traja, dokler dolžina niza ni enaka 1, ko se končni znak (ali prvi znak) natisne in zanka konča.

Zanimive Članki...