特定の文字列に文字「e」が出現する回数を再帰メソッドでカウントしようとしています。私のテスト文字列はCount my e's please!
. これまでのコードは次のとおりです。
public static int showE(String s, int count, int index)
{
if (index == -1) return count;
String e = "e";
int i = s.indexOf(e, index);
if (i != -1) count ++;
return showE(s, count, i);
}
コードをデバッグすると、int i
呼び出しごとに増加するのではなく、9 のままになります。
コードの最後の行が入力として使用されたため、テスト文字列の呼び出しごとにメソッドのシグネチャが 9、15、および 18 にint i
設定されると考えました。int index
文字 e が検出されなくなったら int i
、署名に -1 を送信int count
し、メイン メソッドに戻すと考えました。ただし、デバッグはint i
、StackOverflowError につながる呼び出しごとに 9 に設定されることを示しました。どうすればこれを修正できますか?
編集: これは、Stephen C への応答のコードです。フォーマットについて申し訳ありません:
public static int showE(int count, int index)
{
String e = "e";
index = s.indexOf(e, 0)
for(int i = index; i = < s.length() - 1; i++)
{
if (index == e) count++;
}
return count;
}