C ++反向字符串递归

时间:2014-01-30 02:26:46

标签: c++ string recursion

我试图以递归方式反转一个字符串。如果str1 == "hello",我希望str1成为"olleh"。 在我的递归函数中,我试图将第一个字符复制到临时变量中,递归传递字符串并将临时变量的内容追加到返回字符串的末尾。到目前为止,这是我的代码,

# include <iostream>
# include <string.h>
using namespace std;

string string_reverse(string) ;

int main ()
{
    string str1 = "hello";

    cout << string_reverse(str1) << endl;

    return 0;
}

string string_reverse(string str1)
{
    if (str1.length() == 1)
    { return str1;}
    else
        string temp;
        temp.assign(str1, 0, 1);
        str1.erase(0, 1);
        string_reverse(str1);
        return str1.append(temp);
}

但是,我收到一条错误消息,指出temp未在范围内声明。

2 个答案:

答案 0 :(得分:2)

你错过了{} - 没有它们,你的else子句只是一行string temp;

使用自动回流代码的编辑器可以帮助您查看此类内容。

答案 1 :(得分:1)

您需要围绕else子句大括号。