黑马程序员技术交流社区

标题: 求大神做一道关于递归的题!!!! [打印本页]

作者: 王永贺    时间: 2013-6-25 21:50
标题: 求大神做一道关于递归的题!!!!
在某个盘下面创建0到9十个文件夹 然后依次在这每个文件夹下面又创建0-9十 个文件夹。如此循环总共创建10层。。。。。。。

作者: 张洪慊    时间: 2013-6-25 23:43
  1. /*
  2. 思想:
  3. 以f:为例
  4. f:\0
  5.   f:\0\0 //当递归到第二级需要关键需要改变传入的路径也就是上一级的(dest: f:\0)
  6.   ...      然后与当前目录名进行拼接(f:\0 + \ + 0)
  7.   f:\0\9
  8. f:\1
  9.   f:\1\0
  10.   ...
  11.   f:\1\9
  12. ...
  13. */
  14. import java.io.File;

  15. class CreateDir{
  16.    public static void CreateDirectory(File dest,int level){//使用level控制目录的级数
  17.      String path=dest.getPath()+"\\";
  18.          for(int dirName=0;dirName<10;++dirName){
  19.            dest=new File(path+""+dirName);
  20.            dest.mkdir();
  21.        if(level<2){//创建到二级目录后,不在调用CreateDirectory
  22.             CreateDirectory(dest,level+1);
  23.            }
  24.           }
  25.    }
  26.    public static void main(String[] args){
  27.    
  28.     CreateDirectory(new File("f:"),1);
  29.    }

  30. }
复制代码

作者: 王永贺    时间: 2013-6-26 09:13
本帖最后由 王永贺 于 2013-6-26 09:14 编辑
张洪慊 发表于 2013-6-25 23:43

循环条件应该是level<10因为要创建10层  但是这样的话执行时间特别长  一般情况下这样类似的题,程序执行时间不能这么长,
作者: 张洪慊    时间: 2013-6-26 17:09
本帖最后由 张洪慊 于 2013-6-26 17:11 编辑
王永贺 发表于 2013-6-26 09:13
循环条件应该是level<10因为要创建10层  但是这样的话执行时间特别长  一般情况下这样类似的题,程序执行 ...

嗯,不建议用递归,可以改成纯循环 解决,递归可以简化代码,但是开销比较大,执行效率低。
我的代码还有个缺陷,循环创建对象,我暂时没想到好的解决方式,抛砖引玉了~~






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