跳到主要内容

C++ 编写使用递归反转句子的程序

为了理解这个示例,你应该具备以下 C++ 编程 主题的知识:

示例:使用递归反转一个句子

#include <iostream>
using namespace std;

// 函数原型
void reverse(const string& a);

int main() {
string str;

cout << "请输入一个字符串" << 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));
}
}

输出

输入一个句子: margorp emosewa
awesome program

在这个程序中,用户被要求输入一个字符串,该字符串存储在字符串对象 str 中。

然后调用了 reverse() 函数,这是一个递归函数。

在这个函数内部,我们将输入字符串的大小存储在变量 numOfChars 中。

在第一次函数调用中,reverse() 使用代码:

cout << str[numOfChars - 1];

打印出字符串的最后一个字符。

记住,字符串实际上是字符数组,所以一个字符串的每个单独字符可以表示为字符串数组 str[] 的一个索引。

在下一行,调用了递归函数:

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

这里,substr() 给出了字符串直到倒数第二个字符的部分,然后再次传递给 reverse() 函数。

在下一个 reverse() 调用中,倒数第二个字符被打印,因为字符串比上次少了一个字符。之后,字符串的最后一个字符再次被切掉并传递给 reverse() 函数。

这个过程一直持续到字符串的长度等于 1,此时最后一个字符(或第一个字符)被打印出来,循环结束。