这为什么会产生StackOverflowError

来源:爱站网时间:2021-09-23编辑:网友分享
我是一个树木初学者,我只是第一次尝试实现它,并且正在生成stackoverfloweror。我知道它可能与错误的递归调用有关,但是我看不到...

问题描述


我是一个树木初学者,我只是第一次尝试实现它,并且正在生成stackoverfloweror。我知道它可能与错误的递归调用有关,但是我看不到递归有什么问题,请问我能得到些帮助吗?错误在此代码中。

public void insert(Node node, String value)
{
    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时间戳

下一篇:当存在外键联接时,带有Hibernate的Spring JPA处理空子实体

您可能感兴趣的文章

相关阅读

热门软件源码

最新软件源码下载