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.