🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# C++ 程序:使用递归来反转句子 > 原文: [https://www.programiz.com/cpp-programming/examples/reverse-sentence-recursion](https://www.programiz.com/cpp-programming/examples/reverse-sentence-recursion) #### 该程序从用户处获取一个句子,然后使用递归将其反转。 该程序不使用字符串来反转句子或存储句子。 要理解此示例,您应该了解以下 [C++ 编程](/cpp-programming "C++ tutorial")主题: * [C++ 函数](/cpp-programming/function) * [C++ 中用户定义函数的类型](/cpp-programming/user-defined-function-types) * [C++ 递归](/cpp-programming/recursion) * [C++ `if`,`if...else`和嵌套`if...else`](/cpp-programming/if-else) * * * ## 示例:使用递归反转句子 ```cpp #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)); } } ``` **输出** ```cpp Enter a sentence: margorp emosewa awesome program ``` 在该程序中,要求用户输入存储在字符串对象`str`中的字符串。 然后,调用`reverse()`函数,它是一个递归函数。 在第一个函数调用中,`reverse()`打印字符串的最后一个字符(`numOfChars - 1`),-1,因为数组从 0 开始。 然后,`substr()`给出字符串,直到最后一个第二个字符,然后再次将其传递给`reverse()`函数。 在下一个`reverse()`调用中,将打印倒数第二个字符,因为该字符串比倒数少一个字符。 此后,再次从字符串中截取最后一个字符,并将其传递给`reverse()`函数。 直到输出最后一个字符(或第一个字符)并结束循环时,字符串的长度才等于 1。