c++ - 编写一个递归函数来反转输入字符串

标签 c++ recursion reverse

我一直在阅读 C++ For Everyone 这本书,其中一个练习说要编写一个函数 string reverse(string str) ,其中返回值是 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 str_copy;
    }
    return word;
}

如果我输入“Wolf”,它会返回 Wol。有人帮帮我 如果我 return word 而不是 return str_copy 那么我得到一个 w 如果我 return last_letter 然后我得到一个 l

最佳答案

我将改为解释递归算法本身。以应该产生“tupni”的“input”为例。您可以通过

递归地反转字符串
  • 如果字符串为空或单个字符,则原样返回。
  • 否则,
    1. 删除第一个字符。
    2. 反转剩余的字符串。
    3. 将上面的第一个字符添加到反转的字符串中。
    4. 返回新字符串。

关于c++ - 编写一个递归函数来反转输入字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5760774/

相关文章:

c++ - QCombobox - 隐藏下拉列表中的第一项

c++ - 单元测试 C++ 静态库

c++ - 如何定义递归概念?

c - 列出 block 大小的问题

Python:将符号移动到字符串的开头?

python - 编写一个函数 intreverse(n),它以正整数 n 作为输入,并返回通过反转 n 中的数字而获得的整数

c++ - 将C的char数组转换成C++的字符串

c++ - FMOD 不播放声音 C++

java - 我在java中的这个递归函数中缺少什么

Django HttpResponseRedirect和reverse()