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.