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];

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

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

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

这里,substr() 获取到倒数第二个字符之前的字符串,然后再次传递给 reverse() 函数。

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

这会一直进行,直到字符串长度等于 1,此时打印最后一个(或第一个)字符,循环结束。

你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战