您的位置:首页 > 编程语言 > Java开发

java__递归

2015-09-19 14:11 495 查看
乘阶:



package cn.itcast.other;
/*
递归:函数的自身调用函数的自身。

递归的使用前提: 必须要有条件的情况下调用。

需求: 算出5的阶乘。 5! = 5*4 *3 * 2*1

*/
public class Demo9 {

public static void main(String[] args) {
int result = print(5);
System.out.println("结果:"+ result);
}

public static int print(int num){
if(num==1){
return 1;
}else{
return num*print(num-1);
}
}

public static int test(int num){
int result  =  1;
while(num>0){
result = result*num;
num--;
}
return result;
}
}


package cn.itcast.other;

import java.io.File;

/*
需求1:列出一个文件夹的子孙文件与目录。

2,列出指定目录中所有的子孙文件与子孙目录名,要求名称前面要有相应数量的空格:
第一级前面有0个,第二级前面有1个,第三级前面有2个...,以此类推。

3,列出指定目录中所有的子孙文件与子孙目录名,要求要是树状结构,效果如下所示:
|--src
|   |--cn
|   |   |--itcast
|   |   |   |--a_helloworld
|   |   |   |   |--HelloWorld.java
|   |   |   |--b_for
|   |   |   |   |--ForTest.java
|   |   |   |--c_api
|   |   |   |   |--Student.java
|--bin
|   |--cn
|   |   |--itcast
|   |   |   |--i_exception
|   |   |   |   |--ExceptionTest.class
|   |   |   |--h_linecount
|   |   |   |   |--LineCounter3.class
|   |   |   |   |--LineCounter2.class
|   |   |   |   |--LineCounter.class
|--lib
|   |--commons-io.jar

需求4: 删除一个非空的文件夹。

作业:  剪切一个非空目录。

*/

public class Demo10 {

public static void main(String[] args) {
/*  File dir = new File("F:\\1208project\\day22");
listFiles3(dir,"|--");*/

File dir = new File("F:\\aa");
deleteDir(dir);
}

//删除了一个非空的目录
public static void deleteDir(File dir){ // bb
File[] files = dir.listFiles(); //列出了所有的子文件
for(File file : files){
if(file.isFile()){
file.delete();
}else if(file.isDirectory()){
deleteDir(file); //删除文件
}
}
dir.delete(); //删除文件夹
}

public static void listFiles3(File dir,String space){ //space 存储的是空格
File[] files = dir.listFiles(); //列出所有 的子文件
for(File file : files){
if(file.isFile()){
System.out.println(space+file.getName());
}else if(file.isDirectory()){
System.out.println(space+file.getName());
listFiles3(file,"|   "+space);
}

}

}

//列出一个文件夹的子孙文件与目录。
public static void listFiles2(File dir,String space){ //space 存储的是空格
File[] files = dir.listFiles(); //列出所有 的子文件
for(File file : files){
if(file.isFile()){
System.out.println(space+file.getName());
}else if(file.isDirectory()){
System.out.println(space+file.getName());
listFiles2(file,"  "+space);
}

}

}

//列出一个文件夹的子孙文件与目录。
public static void listFiles1(File dir){
File[] files = dir.listFiles(); //列出所有 的子文件
for(File file : files){
if(file.isFile()){
System.out.println("文件名:"+file.getName());
}else if(file.isDirectory()){
System.out.println("文件夹:"+file.getName());
listFiles1(file);
}

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: