私はプログラミングが初めてなので、このエラーをグーグルで検索しようとしても、自分のプロジェクトに関連するものや、従うのに十分なほど単純なものは見つかりませんでした。
文字列を繰り返し反転する関数を作成し、次に再帰的に反転する別の関数を作成する必要があります。反復関数は完全に正常に機能します。
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);
}
}
このエラーの原因についてのヒントはありますか? 私が読んだことによると、ほとんどの人が何かを削除しようとしたときにこのエラーが発生しましたが、このプログラムでは何も削除していないようです...
注: 配列についてはまだ詳しく説明していないため、配列を使用するのではなく、部分文字列を連結してこれを行う必要があります。