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.








