gpt4 book ai didi

java - java中递归函数的返回值

转载 作者:行者123 更新时间:2023-11-30 07:12:35 25 4
gpt4 key购买 nike

这是一个简单的函数,用于在给定文件夹及其子文件夹中搜索文件我能够找到该文件,但不知何故返回值为空,有人可以解释一下当我们使用递归函数时堆栈中发生了什么如果你能将它与我的场景联系起来,那就太好了......

File getFileInFolder(File folder, String fileName) {

//System.out.println(" PathTo : "+folder.getAbsolutePath());
File [] files = folder.listFiles();

if (files != null) {

for (int i = 0; i < files.length; i++) {
if (files[i].isDirectory()) {
return getFileInFolder(files[i],fileName);
} else {
//System.out.println(" file : "+files[i].getName());
if (files[i].getName().equals(fileName)) {
System.out.println(" Found file : "+files[i].getName());
return files[i];
}
}
}
}

return null;
}

最佳答案

假设您要在以下文件夹中查找 a.txt:

root
sub1
b.txt
sub2
a.txt

你的算法是做什么的

  1. 列出根目录下的文件。返回 sub1 和 sub2。
  2. 遍历文件。如果文件是目录,则返回该目录的方法结果

因此,该算法将仅在 sub1 中搜索,并返回 null。

如果在第一个目录中找不到该文件,则需要继续在其他目录中搜索:

for (int i = 0; i < files.length; i++) {
if (files[i].isDirectory()) {
File resultForSubDirectory = getFileInFolder(files[i], fileName);
if (resultForSubDirectory != null) {
return resultForSubDirectory;
} // else: continue looping
}
else {
...
}
}

关于java - java中递归函数的返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20259033/

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