我试图以递归方式反转一个字符串。如果str1 == "hello"
,我希望str1
成为"olleh"
。
在我的递归函数中,我试图将第一个字符复制到临时变量中,递归传递字符串并将临时变量的内容追加到返回字符串的末尾。到目前为止,这是我的代码,
# include <iostream>
# include <string.h>
using namespace std;
string string_reverse(string) ;
int main ()
{
string str1 = "hello";
cout << string_reverse(str1) << endl;
return 0;
}
string string_reverse(string str1)
{
if (str1.length() == 1)
{ return str1;}
else
string temp;
temp.assign(str1, 0, 1);
str1.erase(0, 1);
string_reverse(str1);
return str1.append(temp);
}
但是,我收到一条错误消息,指出temp
未在范围内声明。
答案 0 :(得分:2)
你错过了{
和}
- 没有它们,你的else子句只是一行string temp;
。
使用自动回流代码的编辑器可以帮助您查看此类内容。
答案 1 :(得分:1)
您需要围绕else
子句大括号。