Programa C ++ para revertir una oración usando recursividad

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.

Articulos interesantes...