Java递归不会返回所有值

Java递归不会返回所有值,java,recursion,Java,Recursion,我在一个名为Folder和Parent的表中有两列。在我的服务中,我有一个名为FolderService.getAllParentss的方法,其中s是一个字符串。但是,文件夹也可以位于父列中,我尝试使用递归公式来获取所有文件夹及其各自的父文件夹。 例如,文档父级和胶片文件夹也包括胶片父级和ReviewFolder、ReviewParent和namefolder等。我想根据搜索的字符串获取所有的父项和文件夹。下面是我一直坚持的递归公式: public ArrayList<String>

我在一个名为Folder和Parent的表中有两列。在我的服务中,我有一个名为FolderService.getAllParentss的方法,其中s是一个字符串。但是,文件夹也可以位于父列中,我尝试使用递归公式来获取所有文件夹及其各自的父文件夹。 例如,文档父级和胶片文件夹也包括胶片父级和ReviewFolder、ReviewParent和namefolder等。我想根据搜索的字符串获取所有的父项和文件夹。下面是我一直坚持的递归公式:

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来获取在递归中添加的所有值。