Java 基于arraylist递归方法的StackOverflower错误

Java 基于arraylist递归方法的StackOverflower错误,java,algorithm,data-structures,recursion,trie,Java,Algorithm,Data Structures,Recursion,Trie,我在线程“main”java.lang.StackOverflower中看到一个异常。我希望知道下面的代码有什么问题 public void addWord(String word){ addWord(word,root,0); } private void addWord(String word,Node root,int pos) { for(Node c:root.children) { if(word.charAt(pos)==c.letter)

我在线程“main”java.lang.StackOverflower中看到一个异常。我希望知道下面的代码有什么问题

public void addWord(String word){
    addWord(word,root,0);
}

private void addWord(String word,Node root,int pos)
{
    for(Node c:root.children)
    {
        if(word.charAt(pos)==c.letter)
        {
            addWord(word,c,pos++);
        }
    }
    Node temp = new Node();
    temp.letter=word.charAt(pos);
    temp.children=new ArrayList<Node>();
    root.children.add(temp);
    if(pos==word.length()-1)
    {
        temp.terminus=true;
        return;
    }
    if(pos<word.length()-1)
    {
        addWord(word,temp,pos++);
    }
}
public void addWord(字符串字){
addWord(字,根,0);
}
私有void addWord(字符串字、节点根、int-pos)
{
for(节点c:root.children)
{
如果(字字符(位置)=c字母)
{
addWord(word,c,pos++);
}
}
节点温度=新节点();
临时字母=单词字符(位置);
temp.children=newarraylist();
root.children.add(temp);
if(pos==word.length()-1)
{
温度终点=真;
返回;
}

if(pos从本质上讲,堆栈溢出源于这样一个事实:您的方法不断被递归调用,并且递归永远不会结束

一个可能的问题是此呼叫:

addWord(word,temp,pos++);
相当于

addWord(word,temp,pos);
pos = pos + 1;
pos = pos + 1;
addWord(word,temp,pos);
你可能是说:

addWord(word,temp,++pos);
这相当于

addWord(word,temp,pos);
pos = pos + 1;
pos = pos + 1;
addWord(word,temp,pos);

我编写了一个更简单的
addWord()


如果其他人正在阅读/使用它,那么使用更多的空格,比如逗号之后、If之后、“==”之前和之后等,可读性会更好。