2012-05-01 10 views
0

入力テキストの母音を数えるプログラムで作業しています。このメソッドを使用して、母音が見つかるたびに、母音カウントに再帰的に加算します。しかし、lastPosが負の1に達するたびに範囲外のエラーが発生します。lastPosが-1に達すると、これをどのように停止できますか?再帰関数が「範囲外」エラーを起こさないようにする

static int R_countVowels(String s, int lastPos) 
{   
    switch (s.charAt(lastPos)) 
    { case 'a': case 'A': 
     case 'e': case 'E': 
     case 'i': case 'I': 
     case 'o': case 'O': 
     case 'u': case 'U': return (1 + R_countVowels(s, --lastPos)); 
     default: return R_countVowels(s, --lastPos); 
    } 
} 
+1

'lastPos'の値をチェックするいくつかのコードを追加することで... –

+3

を、これは宿題である場合は、あなたの質問に「宿題」タグを追加してください。 –

答えて

5

私はこれが宿題なのでコードはないと仮定しています。

再帰関数には、base caseが必要です。空の入力に対して0(母音なし)を返し、帰納的ステップ(再帰呼び出し)の前にベースケースを確認するために、ベースケースを定義する必要があります。

0

switch()ifを挿入します。

if (lastpos < 0) { 
    // stop the recursion 
} 
+1

ありがとう、これは多くの助けになりました。私はちょうどリターン0を使いました。それを停止する。 – JTM

+0

まだ十分ではなく、 'IndexOutOfBoundsException'を投げることができます – JIV