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

Need help with my recursive program that reverses the input

本文关键字:输入 程序 递归 帮助 我的      更新时间:2023-10-16

可能重复:
编写一个递归函数,反转输入

最近,我一直在读《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

您需要返回最后一个字符(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) );
    }
}

这将完成以下工作:

删除return last_letter;

更改`

word += reverse(str_copy);

word = last_letter+reverse(str_copy);

我把这个想法留给你!

最好。