需要帮助我的反转输入的递归程序

时间:2011-04-23 00:21:34

标签: c++ string recursion reverse std

  

可能重复:
  Write a recursive function that reverses the input

最近,我一直在读“C ++ For Everyone”这本书,但我一直无法将递归函数放在一起(很难想到......)

问题是:编写递归函数string reverse(string str),返回str的反向

这是我到目前为止所做的:

string reverse(string str)
{
    string word = "";

    if (str.length() <= 1)
    {
        return str;
    }
    else
    {
        string str_copy = str;
        int n = str_copy.length() - 1;
        string last_letter = str_copy.substr(n, 1);

        str_copy = str_copy.substr(0, n);
        word += reverse(str_copy);
        return last_letter;
    }
    return word;
}

我现在的问题是:

如果我输入wolf,则会返回f

如果我将return last_letter更改为return word,我会w

如果我更改为return str_copy,我会wol

2 个答案:

答案 0 :(得分:3)

您需要返回最后一个字符(last_letter)的组合以及字符串其余部分的反转,但在任何尝试中都不会这样做。你只返回一部分或另一部分。

string reverse(string str)
{
    int len = str.length();
    if (len <= 1)
    {
        return str;
    }
    else
    {
        return str.substr(len-1, 1) + reverse( str.substr(0, len-1) );
    }
}

答案 1 :(得分:1)

这可以完成工作:

删除return last_letter;

改变`

word += reverse(str_copy);

word = last_letter+reverse(str_copy);

我会把想法留给你!

最佳。