黑马程序员技术交流社区
标题:
递归小问题
[打印本页]
作者:
杨道红
时间:
2014-1-7 15:22
标题:
递归小问题
本帖最后由 杨道红 于 2014-1-7 19:42 编辑
import java.io.File;
/*
* 统计一个目录下所有的文件个数
*/
public class FileListTest {
public static void main(String[] args) {
File file = new File("F:\\学习\\JAVA视频");
int len = 0;
listSize(file,len);
}
public static void listSize(File file,int len){
File[] f1 =file.listFiles();
for(int x = 0; x<f1.length; x++){
if(f1[x].isDirectory()){
// System.out.println(len);
listSize(f1[x],len);
}else{
System.out.println(f1[x]);
len++;
}
}
System.out.println(len);
}
}
复制代码
为什么len的值没有传进去,每次都是0开始递加?怎么修改?
作者:
午夜b'Boy
时间:
2014-1-7 15:50
建议先判断是不是文件,文件遍历完len值才为文件夹中所有文件数,再递归遍历子文件夹
作者:
零敢
时间:
2014-1-7 17:27
import java.io.File;
/*
* 统计一个目录下所有的文件个数
*/
public class FileListTest {
public static void main(String[] args) {
File file = new File("F:\\学习\\JAVA视频");
int len = 0;//把这个删除了
listSize(file,len);
}
public static void listSize(File file,int len){//为什么要从main函数传len值应该在这个方法的代码块下直接声明
int len=0;//这样就对了
File[] f1 =file.listFiles();
for(int x = 0; x<f1.length; x++){
if(f1[x].isDirectory()){
// System.out.println(len);
listSize(f1[x],len);
}else{
System.out.println(f1[x]);
len++;
}
}
System.out.println(len);
}
}
作者:
杨道红
时间:
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