递归方法中的StackOverflowError

ric*_*007 2 java string recursion

我正在尝试使用递归方法计算给定字符串中出现的字母"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);
}
Run Code Online (Sandbox Code Playgroud)

当我调试代码时,int i将保持在9而不是通过每次调用增加.

我认为,既然最后一行代码用作int i输入,它将int index通过每次调用测试字符串将方法的签名设置为9,15和18.一旦不再检测到字母e,我认为 int i会将-1发送到签名,然后int count将返回到main方法.但是,调试显示int i每次调用都会将其设置为9,从而导致StackOverflowError.怎么解决这个问题?

编辑:这是响应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;
}
Run Code Online (Sandbox Code Playgroud)

Ash*_*Ash 7

String.indexOf开始搜索您提供的索引.所以它开始在索引9处搜索,并在那里找到'e',因此返回9.

尝试启动indexOf index + 1.