Java递归不会返回所有值
我在一个名为Folder和Parent的表中有两列。在我的服务中,我有一个名为FolderService.getAllParentss的方法,其中s是一个字符串。但是,文件夹也可以位于父列中,我尝试使用递归公式来获取所有文件夹及其各自的父文件夹。 例如,文档父级和胶片文件夹也包括胶片父级和ReviewFolder、ReviewParent和namefolder等。我想根据搜索的字符串获取所有的父项和文件夹。下面是我一直坚持的递归公式:Java递归不会返回所有值,java,recursion,Java,Recursion,我在一个名为Folder和Parent的表中有两列。在我的服务中,我有一个名为FolderService.getAllParentss的方法,其中s是一个字符串。但是,文件夹也可以位于父列中,我尝试使用递归公式来获取所有文件夹及其各自的父文件夹。 例如,文档父级和胶片文件夹也包括胶片父级和ReviewFolder、ReviewParent和namefolder等。我想根据搜索的字符串获取所有的父项和文件夹。下面是我一直坚持的递归公式: public ArrayList<String>
public ArrayList<String> getParents(String s){
ArrayList<String> mn = new ArrayList<String>();
for(FolderManager y:FolderService.getAllParents(s)){
if(y.getParent().isEmpty()){
mn.add(y.getFolder());
return mn;
}else{
return getParents(y.getFolder());
}
}
return mn;
}
我没有收到任何错误,但我只收到
Documents parent-Film folder Film parent-ReviewFolder首先,如果我理解正确,您的FolderService.getAllParents将始终返回一个对象,因为一个子对象只能有一个父对象,不是吗?。 那么我认为这里不需要递归。可以通过一个简单的循环来完成:
List<String> getParents(FolderManager fm) {
List<String> parents = new ArrayList<>();
while (fm.getParent() != null) {
parents.add(fm.getParent().getFolder());
fm = fm.getParent();
}
return parents;
}
春天怎么办?你的错误是什么?我已经编辑了这个问题。请再次检查。在for循环中,您返回了一些内容,而不是将结果添加到mn,然后继续循环。也许您不应该使用return-getParents,而应该使用mn.addAllGetParents。在循环中,您应该使用addAll来获取在递归中添加的所有值。