有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java嵌套ArrayList递归

我正试图找到一个只有名字的父目录, i、 我有一个目录名,我需要找到它并返回它
我使用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) 个答案

  1. # 1 楼答案

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

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