原文: https://www.programiz.com/cpp-programming/examples/reverse-sentence-recursion
要理解此示例,您应该了解以下 C++ 编程主题:
#include <iostream>
using namespace std;
void reverse(const string& a);
int main()
{
string str;
cout << " Please enter a string " << endl;
getline(cin, str);
reverse(str);
return 0;
}
void reverse(const string& str)
{
size_t numOfChars = str.size();
if(numOfChars == 1)
cout << str << endl;
else
{
cout << str[numOfChars - 1];
reverse(str.substr(0, numOfChars - 1));
}
}
输出
Enter a sentence: margorp emosewa
awesome program
在该程序中,要求用户输入存储在字符串对象str
中的字符串。
然后,调用reverse()
函数,它是一个递归函数。 在第一个函数调用中,reverse()
打印字符串的最后一个字符(numOfChars - 1
),-1,因为数组从 0 开始。
然后,substr()
给出字符串,直到最后一个第二个字符,然后再次将其传递给reverse()
函数。
在下一个reverse()
调用中,将打印倒数第二个字符,因为该字符串比倒数少一个字符。 此后,再次从字符串中截取最后一个字符,并将其传递给reverse()
函数。
直到输出最后一个字符(或第一个字符)并结束循环时,字符串的长度才等于 1。