C ++ -ohjelma lauseen kääntämiseksi rekursiota käyttämällä

Tämä ohjelma ottaa käyttäjältä lauseen ja kääntää lauseen käyttämällä rekursiota. Tämä ohjelma ei käytä merkkijonoa lauseen kääntämiseen tai lauseen tallentamiseen.

Tämän esimerkin ymmärtämiseksi sinulla on oltava tieto seuraavista C ++ -ohjelmointiaiheista:

  • C ++ -toiminnot
  • Käyttäjän määrittelemien toimintojen tyypit C ++: ssa
  • C ++ Rekursio
  • C ++ jos, jos… muu ja sisäkkäinen, jos … muuten

Esimerkki: Käännä lause takaisin rekursiolla.

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

Tuotos

 Kirjoita lause: mahtava ohjelma margorp emosewa 

Tässä ohjelmassa käyttäjää pyydetään syöttämään merkkijono, joka on tallennettu merkkijonoobjektiin str.

Sitten reverse()kutsutaan funktiota, joka on rekursiivinen funktio.

Tämän toiminnon sisään tallennetaan syötemerkkijonon koko muuttujaan numOfChars.

Tulostaa ensimmäisessä funktiokutsussa reverse()merkkijonon viimeisen merkin koodilla:

 cout << str(numOfChars - 1);

Muista, että merkkijonot ovat itse asiassa merkistötaulukoita , joten jokaisen merkkijonon yksittäisen merkin voidaan esittää merkkijonotaulukon str () indeksinä.

Seuraavalla rivillä rekursiivista funktiota kutsutaan:

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

Tässä substr()merkkijono antaa toisen viimeisen merkin, joka välitetään uudelleen reverse()funktiolle.

Seuraavassa reverse()puhelussa toinen viimeinen merkki tulostetaan, koska merkkijono sisältää yhden merkin vähemmän edellisestä. Tämän jälkeen yksi merkki viimeisestä katkaistaan ​​uudelleen merkkijonosta ja siirretään reverse()funktiolle.

Tämä jatkuu, kunnes merkkijonon pituus on yhtä kuin 1, kun viimeinen merkki (tai ensimmäinen merkki) tulostetaan ja silmukka loppuu.

Mielenkiintoisia artikkeleita...