黑马程序员技术交流社区

标题: 递归小问题 [打印本页]

作者: 杨道红    时间: 2014-1-7 15:22
标题: 递归小问题
本帖最后由 杨道红 于 2014-1-7 19:42 编辑
  1. import java.io.File;
  2. /*
  3. * 统计一个目录下所有的文件个数
  4. */
  5. public class FileListTest {
  6.         public static void main(String[] args) {
  7.                 File file = new File("F:\\学习\\JAVA视频");
  8.                 int len = 0;
  9.                 listSize(file,len);
  10.         }
  11.         public static void listSize(File file,int len){
  12.                 File[] f1 =file.listFiles();
  13.                 for(int x = 0; x<f1.length; x++){
  14.                         if(f1[x].isDirectory()){
  15. //                                System.out.println(len);
  16.                                 listSize(f1[x],len);
  17.                         }else{
  18.                                 System.out.println(f1[x]);
  19.                                 len++;
  20.                         }
  21.                 }
  22.                 System.out.println(len);
  23.         }
  24. }
复制代码
为什么len的值没有传进去,每次都是0开始递加?怎么修改?

作者: 午夜b'Boy    时间: 2014-1-7 15:50
建议先判断是不是文件,文件遍历完len值才为文件夹中所有文件数,再递归遍历子文件夹
作者: 零敢    时间: 2014-1-7 17:27

作者: 杨道红    时间: 2014-1-7 19:34
零敢 发表于 2014-1-7 17:27
  • import java.io.File;
  • /*
  • * 统计一个目录下所有的文件个数

  • 你这样该我看不懂,首先把main中的int len 删掉,那么listSize中传的值为多少?
    其次,我方法里面有了一个len,你在里面又定义了一个len,不是重名吗?
    作者: 王新年    时间: 2014-1-7 20:35
    通过调试可知这段代码是正确的!len的初始值为0在调用listSize(File file,int len)方法时,首先是获取传入的对象file中的所有文件,通过for循环进行判断每个对象是目录还是文件,如果是目录则进行在次调用,如果是文件则len的值自动加1,对于递归调用可以看如下代码:

    计算1+2+3+4+5的值


    public class Count {

            /**
             * @param args
             */
            public static void main(String[] args) {
                    // TODO 自动生成的方法存根
                    int sum=count(5);
                    System.out.println(sum);

            }
        public static int count(int key){
                 
                if(key==1)
                        return 1;
                return count(key-1)+key;
        }
    }




    求技术分
    作者: 杨道红    时间: 2014-1-9 21:17
    {:soso_e101:}{:soso_e101:}{:soso_e101:}{:soso_e101:}{:soso_e101:}{:soso_e101:}
    作者: 杨道红    时间: 2014-1-10 19:50
    大牛呢?




    欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2