之前我在Java中创建了一个递归程序,其中我有一个Folder
的场景,该文件夹有一组File's
和一些Folder's
(请注意,实际情况不同,它不是文件夹和文件)。因此,每当我在程序中找到一个文件夹时,我就会以递归方式调用我的函数来读取其中的文件和文件夹,直到找不到更多的文件夹。
这是我之前写的代码:
import java.io.File;
public class Filewalker {
public void walk( String path ) {
File root = new File( path );
File[] list = root.listFiles();
if (list == null) return;
for ( File f : list ) {
if ( f.isDirectory() ) {
walk( f.getAbsolutePath() );
System.out.println( "Dir:" + f.getAbsoluteFile() );
}
else {
System.out.println( "File:" + f.getAbsoluteFile() );
}
}
}
public static void main(String[] args) {
Filewalker fw = new Filewalker();
fw.walk("C:\\Java" );
}
}
现在,我获得了一个新的任务,其中的场景是这样的:
Folder
只有File's
,我被要求准备一个递归函数。现在我擅长准备一个程序,我在其中读取文件夹及其中的文件。但是,在这种情况下没有子文件夹,所以我无法找到如何准备递归方案来开发我的Java程序。
请指导我如何在这种用例中准备递归程序?有可能吗?
答案 0 :(得分:1)
为了编写任何递归函数,您需要定义一个作为停止点的条件。
当您确定该条件时,您可以停止或执行一些取决于递归的处理逻辑
您是否只有3个文件或N个文件是无关紧要的。您需要做的就是以递归方式定义处理的步骤,您可以通过具有结束它的明确条件来停止递归。
我的作业的实际要求对我来说并不清楚
有很多方法可以接近陈述A Folder is having just 3 File's and I was asked to prepare a recursive function on this.
一个例子:
public void processFile(File[] files, int index) {
if(index < 0 || index >= files.length) return;
File fileToProcess = files[index];
//processing logic
processFile(files, index + 1);
}