再帰を使用すると、書き込み機能は、(それゆえ、あなたがアレイ内に持っている現在の位置である第三のパラメータは、必要)自体を呼び出す必要があり、ループの谷。
インデックス0から始まり、現在のcharがcharでない場合は0、そうでない場合は1が返されます。次に、配列の残りの部分についても同じ操作を行う必要があります。最後(currIndex == arr.length
)に達すると、合計の開始値として0が返されます。彼は、現在起こって再帰について尋ねisn't
public static void main (final String[] args) {
char[] foo = {'f', 'o', 'o', 'b', 'a', 'r'};
System.out.println (count (foo, 'o')); // 2
System.out.println (countRecursive (foo, 'o')); // 2
}
public static int countRecursive (final char[] arr,
final char ch) {
return countRecursive (arr, ch, 0);
}
public static int countRecursive (final char[] arr,
final char ch,
final int currIndex) {
if (currIndex == arr.length) {
return 0;
} else {
return (arr[currIndex] == ch ? 1 : 0) + countRecursive (arr, ch, currIndex + 1);
}
}
@kkaosninjaは、彼は私の知る限りはそれを得たとして、再帰にこれを書き換えるために私たちを望んでいます。 – SomeJavaGuy
ようこそStackOverflowへ。ヘルプドキュメントの投稿ガイドラインを読み、それに従ってください。 [最小、完全で検証可能な例](http://stackoverflow.com/help/mcve)がここに適用されます。あなたの試みを投稿し、問題を正確に記述するまで、効果的にあなたを助けることはできません。 StackOverflowは、コーディングまたはチュートリアルサービスではありません。私は再帰としてこれを書こうとしていない。 – Prune