我一直在阅读 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”为例。您可以通过
递归地反转字符串- 如果字符串为空或单个字符,则原样返回。
- 否则,
- 删除第一个字符。
- 反转剩余的字符串。
- 将上面的第一个字符添加到反转的字符串中。
- 返回新字符串。
关于c++ - 编写一个递归函数来反转输入字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5760774/