java递归,求帮帮忙

首先06文件夹进来 然后先走else返回07然后拿了里面的文件就return了,那怎么拿06目录的文件呢,不明白。

第1个回答  推荐于2016-11-10
先走else进入07文件夹,然后计算出07文件夹的length之后返回给getFileLength()方法的调用者,也就是这一行
len = len + getFileLength(subFile);
然后从这一行继续下去,直到06文件夹遍历完成。
递归程序遇到return关键字的时候,是return到当前方法的调用者,而不是return到最底层调用者。追问

但是前面的subFile会因为走了07的被重新复写了数组啊,那么06的数组不存在了

追答

这相当于你在做一件事情(06)的时候,突然有什么(07)打断了你,然后你去做07,做完之后重新回到06,你从哪里断了,就从哪里继续接着做06。程序里逻辑一样的。递归的思想就是这样,一层层深入(递进),直到不再进入else为止;然后开始往回走,把之前没有执行完的代码再跑完(归)。
就像盗梦空间,你进入深一层梦境之后,之前一层梦境什么都没有了,但是你从深层梦境返回到上一层梦境之后,所有的一切就还是这一层的老样子。所以从07层回来之后,06层的subFile还是曾经的那个06层的subFile,没有因为07层的subFile是什么而改变。

本回答被提问者采纳
第2个回答  2015-10-27
文件夹肯定也是文件啊!!if里面改成isDirectory() ,
if(subFile.isDirectory()){//如果是目录
//递归
}else{//否则
//累加
}
哦,拿06的啊!我这个也行,你把dir改成06的路径。
或者你的你先单独拿06的文件加大小,要跳过目录!
相似回答