最近,我一直在读“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
答案 0 :(得分:3)
您需要返回最后一个字符(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) );
}
}
答案 1 :(得分:1)
这可以完成工作:
删除return last_letter;
改变`
word += reverse(str_copy);
到
word = last_letter+reverse(str_copy);
我会把想法留给你!
最佳。