Este programa toma una oración del usuario y la invierte usando la recursividad. Este programa no usa cadenas para revertir la oración o almacenar la oración.
Para comprender este ejemplo, debe tener el conocimiento de los siguientes temas de programación de C ++:
- Funciones C ++
- Tipos de funciones definidas por el usuario en C ++
- Recurrencia de C ++
- C ++ if, if … else y anidado if … else
Ejemplo: invierte una oración usando la recursividad.
#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)); ) )
Salida
Ingrese una oración: programa impresionante de margorp emosewa
En este programa, se le pide al usuario que ingrese una cadena que se almacena en el objeto de cadena str.
Entonces, reverse()
se llama a la función que es una función recursiva.
Dentro de esta función, almacenamos el tamaño de la cadena de entrada en la variable numOfChars.
En la primera llamada a la función, reverse()
imprime el último carácter de la cadena con el código:
cout << str(numOfChars - 1);
Recuerde que las cadenas son en realidad matrices de caracteres , por lo que cada carácter individual de una cadena se puede representar como un índice de la matriz de cadenas str ().
En la siguiente línea, se llama a la función recursiva:
reverse(str.substr(0, numOfChars - 1));
Aquí, substr()
da la cadena hasta el segundo último carácter, que se pasa nuevamente a la reverse()
función.
En la siguiente reverse()
llamada, se imprime el segundo último carácter porque la cadena contiene un carácter menos del anterior. Después de esto, un carácter del último se corta nuevamente de la cadena y se pasa a la reverse()
función.
Esto va hasta que la longitud de la cadena es igual a 1, cuando se imprime el carácter final (o el primer carácter) y termina el ciclo.