Java递归不返回所有值

时间:2017-12-17 15:39:06

标签: java recursion

我在一个名为Folder and Parent.的表中有两列。在我的服务中,我有一个名为FolderService.getAllParents(s)的方法 - 其中(s)是一个字符串。但是,一个文件夹也可以在父列中,我试图做一个递归公式来获取所有文件夹及其各自的父项。 例如Documents (parent)Film (folder)Film (parent)Reviews(folder)Reviews(parent)name(folder)等等。我想根据搜索到的字符串获取所有父母和文件夹。这是我坚持的递归公式:

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) - Reviews(folder)

1 个答案:

答案 0 :(得分:1)

首先,如果我理解正确,你的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;
}