我是编程的新手,所以即使在尝试谷歌这个错误之后,我找不到任何与我的项目相关的内容,或者对我来说很简单。
我必须创建一个迭代地反转字符串的函数,然后是递归执行的另一个函数。迭代函数完全正常:
string reverse(string str_input) {
string result = ""; //initialize a blank string to hold reversed string
for(int i = (str_input.length() - 1); i >= 0; i--) {
result += str_input.substr(i,1); //concatenates the string backwards
}
return result;
然而,当我试图使其递归时,我得到了无效的指针错误。我复制了我正在使用的主要测试和其他功能: string reverse_rec(string str_input,string result,int input_length);
int main() {
string str_input = "hello";
int input_length = (str_input.length() - 1);
string result = "";
cout<< reverse_rec(str_input, result, input_length) << endl;
return 0;
}
string reverse_rec(string str_input, string result, int input_length) {
if(input_length <= 0) {
return result;
} else {
reverse_rec(str_input, result += str_input.substr(input_length,1), --input_length);
}
}
是否有人对可能导致此错误的原因有任何提示?根据我的阅读,大多数人在尝试删除内容时都会遇到此错误,但我似乎没有删除此程序中的任何内容......
注意:我们必须通过连接子串而不是使用数组来实现这一点,因为我们还没有深入介绍数组。
答案 0 :(得分:1)
你忘了回来:
reverse_rec(str_input, result += str_input.substr(input_length,1), --input_length);
^^^^^
编译器很容易发现这些错误。你应该启用警告。