gpt4 book ai didi

java - 递归方法中的 StackOverflowError

转载 作者:行者123 更新时间:2023-12-04 20:39:52 28 4
gpt4 key购买 nike

我正在尝试使用递归方法计算字母“e”在给定字符串中出现的次数。我的测试字符串是 请数我的 e!。这是到目前为止的代码:

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 将返回到 main 方法。但是,调试显示 int i 会在每次导致 StackOverflowError 的调用中设置为 9。如何解决这个问题?

编辑:这是响应 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;
}

最佳答案

String.indexOf开始搜索您提供的索引。因此它从索引 9 开始搜索,并在那里找到一个 'e',因此返回 9。

尝试从 index + 1 开始 indexOf。

关于java - 递归方法中的 StackOverflowError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15317415/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com