Skip to content

Latest commit

 

History

History
63 lines (44 loc) · 1.96 KB

97.md

File metadata and controls

63 lines (44 loc) · 1.96 KB

C++ 程序:使用递归来反转句子

原文: https://www.programiz.com/cpp-programming/examples/reverse-sentence-recursion

该程序从用户处获取一个句子,然后使用递归将其反转。 该程序不使用字符串来反转句子或存储句子。

要理解此示例,您应该了解以下 C++ 编程主题:


示例:使用递归反转句子

#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));
    }
} 

输出

Enter a sentence: margorp emosewa
awesome program

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

然后,调用reverse()函数,它是一个递归函数。 在第一个函数调用中,reverse()打印字符串的最后一个字符(numOfChars - 1),-1,因为数组从 0 开始。

然后,substr()给出字符串,直到最后一个第二个字符,然后再次将其传递给reverse()函数。

在下一个reverse()调用中,将打印倒数第二个字符,因为该字符串比倒数少一个字符。 此后,再次从字符串中截取最后一个字符,并将其传递给reverse()函数。

直到输出最后一个字符(或第一个字符)并结束循环时,字符串的长度才等于 1。