防止递归函数导致“越界”错误

时间:2012-05-01 00:35:48

标签: java

我一直致力于计算输入文本元音的程序。每次发现元音时,它都会使用此方法递归添加元音计数。但是,每次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);
    }
}

2 个答案:

答案 0 :(得分:5)

我假设这是作业,所以没有代码。

递归函数需要base case。您需要定义基本情况,以便为空输入返回0(无元音),并在归纳步骤(递归调用)之前检查基本情况。

答案 1 :(得分:0)

if

之前插入switch()
if (lastpos < 0) {
  // stop the recursion
}