2012-05-01 44 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

插入一個ifswitch()

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

謝謝,這有很大的幫助。我只是使用返回0;停止它。 – JTM

+0

還不夠,仍然可以拋出'IndexOutOfBoundsException' – JIV