我的递归程序需要反转输入的帮助
可能的重复:
编写一个反转输入的递归函数
最近,我'我一直在读《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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您需要返回最后一个字符 (
last_letter
) 和字符串其余部分的反转的组合,但您在任何尝试中都不会这样做。您只能退回其中一部分。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.这可以完成工作:
删除返回last_letter;
将 ` 更改
为
我将把想法留给你!
最好的。
This would do the work:
Delete return last_letter;
Change `
to
I'll leave the thinking to you!
Best.