如何使用Java中的递归来保留信息

时间:2015-10-11 16:27:22

标签: java recursion

基本上,每次我递归,我都会重置变量" path,"但我需要保留这些信息。另外,我不能将它作为参数传递。有没有办法做到这一点?

以下是我现在的代码:

public List<Person> getDiseaseRouteTo(Person c){

    List<Person> path = new LinkedList<Person>();

    if (this.root == c) {
        path.add(c);
        } else if (this.root != c) {
            path.add(this.root);
            for (DiseaseTree child: this.getChildren()) {
                if (child.contains(c)) {
                    path.add(child.getRoot());
                    return child.getDiseaseRouteTo(c);
                }
            }
        }
        return path;
    }

2 个答案:

答案 0 :(得分:6)

  

另外,我不能将其作为参数传递。

您始终可以创建一个私有帮助方法,您可以在其中传递它:

public List<Person> getDiseaseRouteTo(Person c) {
    List<Person> path = new LinkedList<Person>();
    return getDiseaseRouteTo(c, path);
}

private List<Person> getDiseaseRouteTo(Person c, List<Person> path) {
    // ...
}

答案 1 :(得分:3)

每次调用方法时,都在创建LinkedList的新实例。

您可以在path方法范围之外的其他地方创建getDiseaseRouteTo变量,就像janos建议的那样。