我想要一个递归方法计算给定字符串中出现多少个字母“e”的实例。我的测试字符串是Count my e's please!
。这是迄今为止代码:递归方法中的StackOverflowError
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);
}
当我调试的代码,int i
将保持在9,而不是通过每次调用增加。
我认为,因为代码,最后一行使用int i
作为输入,它将在该方法中的签名集int index
通过每个呼叫的测试字符串至9,15和18。一旦字母e不再被检测到,我认为int i
将发送-1到签名,然后int count
将返回到主方法。但是,调试表明int i
将通过每次调用导致StackOverflowError设置为9。如何解决这个问题?
编辑:这是响应斯蒂芬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;
}
几乎总是问题与停止条件。 – 2013-03-10 00:13:50
为什么你使用递归方法呢? – Rob 2013-03-10 00:14:39
@Rob:我假设OP正在尝试递归,因为循环会更容易理解。 – Ash 2013-03-10 00:15:43