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

发布于 2024-11-03 03:02:32 字数 992 浏览 0 评论 0原文

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

最近,我'我一直在读《C++ ForEveryone》一书,但我在组合递归函数时遇到了麻烦(令人困惑……)

问题是:编写一个递归函数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,我得到 沃尔

Possible Duplicate:
Write a recursive function that reverses the input

Recently, I've been reading the book C++ For Everyone and I've been having trouble putting together a recursive function (Confusing to think about...)

The question was: Write a recursive function string reverse(string str) that returns the reverse of str

This is what I have so far:

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

My problems now is:

If I enter wolf, it returns f

If I change return last_letter to return word, I get w

If I change to return str_copy, I get wol

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

温柔少女心 2024-11-10 03:02:32

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

You need to return the combination of the the last character (last_letter) and the reversal of the rest of the string, but you don't do that in any of your attempts. You only ever return one part or the other.

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) );
    }
}
泼猴你往哪里跑 2024-11-10 03:02:32

这可以完成工作:

删除返回last_letter;

将 ` 更改

word += reverse(str_copy);

word = last_letter+reverse(str_copy);

我将把想法留给你!

最好的。

This would do the work:

Delete return last_letter;

Change `

word += reverse(str_copy);

to

word = last_letter+reverse(str_copy);

I'll leave the thinking to you!

Best.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文