Programa C ++ para reverter uma frase usando recursão

Este programa pega uma frase do usuário e inverte essa frase usando recursão. Este programa não usa string para inverter ou armazenar a frase.

Para entender este exemplo, você deve ter conhecimento dos seguintes tópicos de programação C ++:

  • Funções C ++
  • Tipos de funções definidas pelo usuário em C ++
  • C ++ Recursion
  • C ++ if, if … else e aninhado if … else

Exemplo: inverta uma frase usando recursão.

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

Resultado

 Digite uma frase: margorp emosewa awesome program 

Neste programa, o usuário é solicitado a inserir uma string que é armazenada no objeto string str.

Então, a reverse()função é chamada, que é uma função recursiva.

Dentro desta função, armazenamos o tamanho da string de entrada na variável numOfChars.

Na primeira chamada de função, reverse()imprime o último caractere da string com o código:

 cout << str(numOfChars - 1);

Lembre-se de que as strings são, na verdade , matrizes de caracteres , portanto, cada caractere individual de uma string pode ser representado como um índice da matriz de strings str ().

Na próxima linha, a função recursiva é chamada:

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

Aqui, substr()atribui a string até o segundo último caractere, que é passado novamente para a reverse()função.

Na próxima reverse()chamada, o segundo último caractere é impresso porque a string contém um caractere a menos do último. Depois disso, um caractere do último é cortado da string novamente e passado para a reverse()função.

Isso vai até que o comprimento da string seja igual a 1, quando o caractere final (ou o primeiro caractere) é impresso e o loop termina.

Artigos interessantes...