如何创建递归函数

时间:2015-06-27 15:41:35

标签: java recursion

之前我在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程序。

请指导我如何在这种用例中准备递归程序?有可能吗?

1 个答案:

答案 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);  
}