2015-06-27 84 views
-3

早先我创建了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程序。

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

+2

显示我们到目前为止你做了什么。发布[MCVE](http://stackoverflow.com/help/mcve)(最小完整可验证示例)或[SSCCE](http://www.sscce.org/)(简短,独立,正确的示例)。 – Madhan

+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); 
} 
+0

感谢评论,我有关于递归的想法,但我怎么才能实现它为我的场景解释? – user3181365

+0

@ user3181365:查看更新 – Cratylus

+0

@HovercraftFullOfEels,我完成了功课,但在这里如何使用递归卡住了。所以来这里的正确方法,对不起,如果它伤害任何人 – user3181365