使用递归反转句子的 C++ 程序
该程序从用户那里获取一个句子并使用递归反转该句子。该程序不使用字符串来反转句子或存储句子。
要理解此示例,您应该具备以下 C++ 编程 主题的知识:
示例:使用递归反转句子
#include <iostream>
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));
}
}
输出
Enter a sentence: margorp emosewa
awesome program
在这个程序中,用户被要求输入一个存储在字符串对象 str
中的字符串.
然后,调用该 reverse()
函数,这是一个递归函数。
在这个函数中,我们将输入字符串的大小存储在 numOfChars
变量中。
在第一个函数调用中, reverse()
使用代码打印字符串的最后一个字符:
cout << str[numOfChars - 1];
请记住,字符串实际上是 字符数组,因此字符串的每个单独字符都可以使用索引从字符串数组获取.
在下一行,递归函数被调用:
reverse(str.substr(0, numOfChars - 1));
在这里, substr()
给出字符串直到倒数第二个字符的子字符串,该字符再次传递给 reverse()
函数。
在下一次 reverse()
调用中,将打印倒数第二个字符,因为该字符串比最后一个字符少一个。在此之后,最后一个字符再次从字符串中截取并传递给 reverse()
函数。
这一直持续到字符串的长度等于 1,当最后一个字符(或第一个字符)被打印并且循环结束时。