gpt4 book ai didi

java - 了解递归流程

转载 作者:行者123 更新时间:2023-11-29 05:58:28 25 4
gpt4 key购买 nike

我知道递归的基础知识,但在给定的代码中我很难理解流程。
请帮帮我...

public ArrayList<String> searchFolders(File fo) {

if (fo.isDirectory()) {

String internalNames[] = fo.list();



for (int i = 0; i < internalNames.length; i++) {
searchFolders(new File(fo.getAbsolutePath() + "\\"+ internalNames[i]));
path = fo.getAbsolutePath() + "\\" + internalNames[i];
}
}
if (fo.isFile()) {

alist.add(fo.toString());


}


return alist;
}

最佳答案

基本上,此代码获取目录的所有内容并将它们添加到全局变量 alist

你给它一个目录。如果它是一个文件,则将其名称添加到列表中,然后该方法返回(文件不能有子文件夹)。

如果是文件夹,则列出文件夹中的所有内容:

String internalNames[] = fo.list();

然后对文件夹中的每个项目执行相同的搜索:

searchFolders(new File(fo.getAbsolutePath() + "\\"+ internalNames[i]));

因此,如果您当前正在搜索的项目是一个文件(如果 fo.getAbsolutePath() + "\\"+ internalNames[i] 是一个文件的目录),那么它只需将文件添加到全局 ArrayList。

否则,如果它是一个文件夹,它会像搜索它刚刚查看的文件夹一样搜索它,并列出该文件夹中的所有文件。

您似乎没有使用变量 path

当您返回 alist 时,您将返回到目前为止在该文件夹(及其子文件夹)中找到的所有文件。您没有返回文件夹名称,因为 fo.isDirectory() 时,您没有将其名称添加到 alist

enter image description here

关于java - 了解递归流程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11116157/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com