gpt4 book ai didi

java - 为什么会产生 StackOverflowError

转载 作者:行者123 更新时间:2023-12-01 15:13:57 25 4
gpt4 key购买 nike

我是树木的初学者,我只是第一次尝试实现一个树木并正在生成 stackoverfloweror。我知道它可能与错误的递归调用有关,但是我没有看到递归有任何问题,我可以获得一点帮助吗?错误就在这段代码中。

public void insert(Node node, String value)
{
if((value.compareTo(node.getValue())) < 0)
{
if (node.left != null)
{
insert(node.left, value);
}
else
node.left = new Node(value);

}
else if((value.compareTo(node.getValue())) > 0)
{
if(node.right !=null)
{
insert(node.right, value);
}
else
node.right= new Node(value);
}
}

我在这里调用该方法

public static void main(String[] args) throws FileNotFoundException, IOException {
Tree dataTree = new Tree(new Node("m"));


File file = new File("C:\\randomdata.csv");

BufferedReader br = new BufferedReader(new FileReader(file));
String line;

while((line = br.readLine()) != null){
if(line.toString().contains("zogeti"))
break;
else
{
dataTree.insert(dataTree.getRootElement(),line);
}
}

br.close();
}

最佳答案

如果文件最初是排序的,那么这个函数看起来会递归 N 次一个有 N 行的文件。 Java没有实现尾递归,所以这肯定是一个真正的递归递归。将其重写为 while 循环而不是递归函数。

关于java - 为什么会产生 StackOverflowError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11910361/

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