Programma C ++ per invertire una frase usando la ricorsione

Questo programma prende una frase dall'utente e la inverte usando la ricorsione. Questo programma non utilizza la stringa per invertire la frase o memorizzare la frase.

Per comprendere questo esempio, è necessario conoscere i seguenti argomenti di programmazione C ++:

  • Funzioni C ++
  • Tipi di funzioni definite dall'utente in C ++
  • Ricorsione C ++
  • C ++ if, if … else e Nested if … else

Esempio: invertire una frase utilizzando la ricorsione.

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

Produzione

 Inserisci una frase: margorp emosewa fantastico programma 

In questo programma, all'utente viene chiesto di inserire una stringa che viene memorizzata nell'oggetto stringa str.

Quindi, reverse()viene chiamata la funzione che è una funzione ricorsiva.

All'interno di questa funzione, memorizziamo la dimensione della stringa di input nella variabile numOfChars.

Nella prima chiamata di funzione, reverse()stampa l'ultimo carattere della stringa con il codice:

 cout << str(numOfChars - 1);

Ricorda che le stringhe sono in realtà matrici di caratteri , quindi ogni singolo carattere di una stringa può essere rappresentato come un indice della matrice di stringhe str ().

Nella riga successiva, viene chiamata la funzione ricorsiva:

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

Qui, substr()fornisce la stringa fino al penultimo carattere, che viene passato di nuovo alla reverse()funzione.

Nella reverse()chiamata successiva , viene stampato il penultimo carattere perché la stringa contiene un carattere in meno dall'ultimo. Dopodiché, un carattere dall'ultimo viene nuovamente tagliato dalla stringa e passato alla reverse()funzione.

Questo va fino a quando la lunghezza della stringa è uguale a 1, quando viene stampato il carattere finale (o il primo carattere) e il ciclo termina.

Articoli interessanti...