c++ - 需要有关反转输入的递归程序的帮助

标签 c++ string recursion reverse std

<分区>

Possible Duplicate:
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

最佳答案

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

关于c++ - 需要有关反转输入的递归程序的帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5761251/

相关文章:

C++减少矩阵的维度

c++ - auto 如何决定变量的类型?

c# - 时间戳字符串长度

c++ - 我如何测试静态断言确实断言 "false"?

c++ - 未知大小复杂度的堆栈分配

java - 如何根据网站域名过滤网址?

c - 将 fgets 与数组指针结合使用

algorithm - 分而治之算法的属性示例

java - inOrderIterator 方法不能应用于 BinaryTreeNode<T>

java - 防止 toString() 无限递归的最有效方法?