Java 如何创建递归函数

Java 如何创建递归函数,java,recursion,Java,Recursion,前面我用Java创建了一个递归程序,其中有一个场景,其中有一个文件夹,该文件夹有一组文件和一些文件夹(请注意,实际场景不同,不是文件夹和文件)。所以,每当我在程序中找到一个文件夹时,我总是递归调用我的函数来读取其中的文件和文件夹,直到我找不到更多的文件夹为止 这是我之前编写的代码: import java.io.File; public class Filewalker { public void walk( String path ) { File root =

前面我用Java创建了一个递归程序,其中有一个场景,其中有一个
文件夹
,该文件夹有一组
文件
和一些
文件夹
(请注意,实际场景不同,不是文件夹和文件)。所以,每当我在程序中找到一个文件夹时,我总是递归调用我的函数来读取其中的文件和文件夹,直到我找不到更多的文件夹为止

这是我之前编写的代码:

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

}
现在,我得到了一个新的任务,场景如下:

一个
文件夹
只有
文件的
,我被要求准备一个递归函数。现在我擅长准备一个程序,在其中我可以读取文件夹和其中的文件。但是,在本例中没有子文件夹,因此我无法找到如何准备递归场景来开发Java程序

你能指导我如何在这样的用例中编写递归程序吗?有可能吗?

为了编写任何递归函数,您需要定义一个作为停止点的条件。
当您确定该条件时,您要么停止,要么执行一些依赖于递归的处理逻辑。
无论您只有3个文件还是N个文件都无关紧要。您所需要做的就是以递归的方式定义处理步骤,您可以通过有一个明确的结束递归的条件来停止递归

我不清楚你的任务的实际要求。
有很多方法可以处理语句
一个文件夹只有3个文件,我被要求为此准备一个递归函数。

例如:

public void processFile(File[] files, int index) {
   if(index < 0 || index >= files.length) return;
   File fileToProcess = files[index];  
   //processing logic   
   processFile(files, index + 1);  
}
public void进程文件(文件[]文件,int索引){
if(index<0 | | index>=files.length)返回;
File fileToProcess=文件[索引];
//处理逻辑
processFile(文件,索引+1);
}

向我们展示您迄今为止所做的工作。发布一个(最小完整可验证示例)或(简短、独立、正确的示例)。这个问题最好由设置作业的人回答。你可以问他们为什么要在没有充分理由的情况下使用递归。这里不需要递归。这是一种很好的技术,只有当深度从一开始就不知道时才使用。@Madhan,请添加代码check@david.lucky,文件夹中的文件数一开始是未知的,这也是递归的原因吗?谢谢你的评论,我对递归有了概念,但是我该如何在我的场景中实现它呢?@HovercraftFullOfEels,我已经完成了家庭作业,但是在这里我被困在了如何使用递归上。所以来这里是为了正确的方法,抱歉,如果它伤害了任何人+1您的答案中的代码似乎适合我的用例,我将尝试这种方法,看看它是否适合我的程序。谢谢