递归简单经典例子
斐波那契数列
第n项是第n-1项和第n-2项之和
//斐波那契数列
public class RecursionTest2 {
public static void main(String[] args) {
System.out.println(add(7));
}
//1,1,2,3,5,8,13,21,34,55
public static int add(int n){
if (n<0) {
System.out.println("输入不规范");
return -1;
}
if (n==1){
return 1;
}
if(n==0)
return 0;
return add(n-1)+add(n-2);
}
}
阶乘
迭代不断的把任务抛给前一项,
第5项的积为5乘上第4项的阶乘
第4项的积为4乘上第3项的阶乘.
第3项的积为3乘上第2项的阶乘.
第2项的积为2乘上第1项的阶乘.
第1项结果就是1
//阶乘
public class RecursionTest {
public static void main(String[] args) {
System.out.println(function(5));
}
public static int function(int n){
if (n>=0){
if (n==0){
return 1;
}
return n*function(n-1);
}else {
System.out.println("输入有误");
return -1;
}
}
}
求文件夹大小
mport java.io.File;
//获取文件夹大小
public class GetFileTest {
public static void main(String[] args) {
String path = "D:" + File.separator + "eclipse";
File file=new File(path);
System.out.println(getLength(file));
}
public static long getLength(File file){
System.out.println("当前正在统计的是:"+file.getAbsoluteFile());
long length = file.length();
//判断是不是标准文件还是目录
if(file.isFile()){
length=file.length();
//返回值,不然报空指针异常
return length;
}
//如果不是标准文件
File[] files = file.listFiles();
for (File f:files){
//文件长度等于length+方法调用
length=length+getLength(f);
}
return length;
}
}
删除文件夹
import java.io.File;
//删除文件夹
public class DeleteFileTest {
public static void main(String[] args) {
System.out.println("========================");
String path = "D:" + File.separator + "AAB";
deleteDir(path);
}
//定义方法传入路径名
public static void deleteDir(String path){
File file=new File(path);
File[] files = file.listFiles();
//遍历文件列表
for (File f:files){
//如果是文件夹用递归思想删除
if (f.isDirectory()){
//删除绝对路径
deleteDir(f.getAbsolutePath());
}else {
//如果是标准文件直接删除
f.delete();
}
}
//把文件夹删完自己也要删除
file.delete();
}
}