C ++ programm lause ümberpööramiseks rekursiooni abil

Lang L: none (table-of-contents)

See programm võtab kasutajalt lause ja muudab selle lause rekursiooni abil. See programm ei kasuta stringi lause ümberpööramiseks ega lause salvestamiseks.

Selle näite mõistmiseks peaksid teil olema teadmised järgmistest C ++ programmeerimise teemadest:

  • C ++ funktsioonid
  • Kasutaja määratud funktsioonide tüübid C ++ keeles
  • C ++ rekursioon
  • C ++ kui, kui … muul juhul ja Pesatud, kui … muul juhul

Näide: Pöörake lause rekursiooni abil tagasi.

 #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äljund

 Sisestage lause: margorp emosewa fantastiline programm 

Selles programmis palutakse kasutajal sisestada string, mis on salvestatud stringi objekti str.

Seejärel reverse()nimetatakse funktsiooni, mis on rekursiivne funktsioon.

Selle funktsiooni sees salvestame sisendstringi suuruse muutujasse numOfChars.

Esimeses funktsioonikõnes reverse()prindib stringi viimane märk koodiga:

 cout << str(numOfChars - 1);

Pidage meeles, et stringid on tegelikult märkide massiivid , nii et stringi iga üksikut tähemärki saab esitada stringi massiivi str () indeksina.

Järgmisel real nimetatakse rekursiivset funktsiooni:

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

Siin substr()annab string kuni viimase viimase märgini, mis edastatakse uuesti reverse()funktsioonile.

Järgmises reverse()kõnes prinditakse 2. viimane märk, kuna string sisaldab ühte märki vähem kui viimane. Pärast seda lõigatakse üks märk viimasest uuesti stringist välja ja edastatakse reverse()funktsioonile.

See kestab seni, kuni stringi pikkus on võrdne 1, kui viimane märk (või esimene märk) on trükitud ja silmus lõpeb.

Huvitavad Artiklid...