基本上,每次我递归,我都会重置变量" 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;
}
答案 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建议的那样。