嵌套阵列递归



我正在尝试找到只给出其名称的父目录,即我有一个目录名称,我需要找到它并返回它。
我使用arraylist代表目录。此外,我不知道我要寻找的目录的深度是什么,所以我使用了递归,我只知道目录存在并且需要返回。

我的代码是:

private static Directory getParentDirectory(String parentDirName, Directory currentDirectory, int level) {
    if (currentDirectory.getName().equals(parentDirName)) {
        return currentDirectory;
    } else {
        // Recursively search for the parent Directory
        for (Entity item : currentDirectory.contents) {
            if (item instanceof Directory) {
                getParentDirectory(parentDirName, (Directory) item, level + 1);
            }
        }
    }
    System.out.println("Couldn't find relevant Directory!");
    return currentDirectory;
}

我的问题是在递归中 - 我不知道为什么,但是即使第一个"如果"符合"如果"(发现了dir(,当返回时,该功能仍然在递归中仍未退出并打印"找不到相关目录!"

而不是返回默认值,您可以在递归电话中返回。

private static Directory getParentDirectory(String parentDirName, Directory currentDirectory, int level) {
    if (currentDirectory.getName().equals(parentDirName)) {
        return currentDirectory;
    } else {
        // Recursively search for the parent Directory
        for (Entity item : currentDirectory.contents) {
            if (item instanceof Directory) {
                Directotry result = getParentDirectory(parentDirName, (Directory) item, level + 1);
                if (result != null) {
                    return result;
                }
            }
        }
    }
    return null;
}

最新更新