嵌套的ArrayList递归

时间:2018-03-30 11:04:43

标签: java recursion arraylist

我试图找到一个只有名称的父目录, 即我有一个目录名称,我需要找到并返回它 我使用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;
}

我的问题在于递归 - 我不知道为什么,但即使第一个“if”语句被满足(并且发现了Dir),函数仍然继续递归,当返回时不退出 并打印“无法找到相关目录!”

1 个答案:

答案 0 :(得分:3)

如果找到,则可以在递归调用期间返回,而不是返回默认值。

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;
}