私たちは私が個人的に好まない再帰関数になっていますが、それを使う必要があります。次のコードは、文字列入力 's'が回文型かどうかをチェックするためのコードです。C++再帰的なブール・ペインドロム(文字列s)
bool palindrome(string s)
{
int len = s.length();
char start = s.at(0);
char last = s.at(0);
if(len>1)
{
last = s.at(len);
}
if(start == last && len<=2)
{
return true;
}
else if(start != last)
{
return false;
}
else
{
s = s.substr(1, s.size() - 2);
return palindrome(s);
}
}
はこれを実行すると、文字列を入力した後、私は「のstd :: out_of_range」ランタイムエラーを取得し、私は私が台無しよどこか分かりません。私は再帰関数やC++にはまったく新しいので、どんな助けも素晴らしいだろう。
私が提供していない追加情報が必要な場合は教えてください。
注:bool関数を使用する必要があり、関数に入力した文字列を呼び出すことしかできません。
でなければなりません。 'last = s.at(len);':sが5文字の場合、lenは5ですが、 's.at(5)'は存在しないのでbarfになります。再帰はあなたの問題の中では最小です。 0ベースの配列インデックス作成の基本を得る必要があります。 –
これを念頭に置いてください:**エラーは読まれました**。 エラーには、このエラーが発生した行が含まれています。そうでない場合は、これを表示するデバッグツールを使用して実行します。 存在しない配列/文字列内の位置にアクセスしようとすると、範囲外のエラーがスローされます。 手作業でコードを処理し、次にエラーが発生する可能性があります。 –
"私たちは個人的に好きではない再帰関数になっています"再帰関数なしでは解決できない状況がほとんどありません –