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,此时最后一个字符(或第一个字符)被打印出来,循环结束。