Program C ++ pentru inversarea unei propoziții folosind recursivitate

Acest program ia o frază de la utilizator și inversează acea propoziție folosind recursivitatea. Acest program nu folosește șiruri pentru a inversa propoziția sau a stoca propoziția.

Pentru a înțelege acest exemplu, ar trebui să aveți cunoștințele următoarelor subiecte de programare C ++:

  • Funcții C ++
  • Tipuri de funcții definite de utilizator în C ++
  • C ++ Recursivitate
  • C ++ dacă, dacă … altfel și cuibărit dacă … altfel

Exemplu: inversați o propoziție folosind recursivitate.

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

Ieșire

 Introduceți o propoziție: margorp emosewa awesome program 

În acest program, utilizatorul este rugat să introducă un șir care este stocat în obiectul șir str.

Apoi, reverse()funcția este numită care este o funcție recursivă.

În interiorul acestei funcții, stocăm dimensiunea șirului de intrare în variabila numOfChars.

În primul apel de funcție, reverse()imprimă ultimul caracter al șirului cu codul:

 cout << str(numOfChars - 1);

Amintiți-vă că șirurile sunt de fapt matrice de caractere , astfel încât fiecare caracter individual al unui șir poate fi reprezentat ca un index al matricei de șiruri str ().

În linia următoare, funcția recursivă se numește:

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

Aici, substr()dă șirul până la ultimul 2 caracter, care este trecut din nou reverse()funcției.

În următorul reverse()apel, este imprimat al doilea ultim caracter, deoarece șirul conține un caracter mai puțin din ultimul. După aceasta, un caracter din ultimul este decupat din șir din nou și trecut la reverse()funcție.

Aceasta merge până când lungimea șirului este egală cu 1, când caracterul final (sau primul caracter) este tipărit și bucla se termină.

Articole interesante...