JAVA——进阶语法——递归算法的概念和简单应用举例
一、概念
递归:方法调用自己的一种编程方式
注意:方法里必须有结束的途径
二、简单应用举例
1.定义一个方法求阶乘
(1)问题
例如:想要求5的阶乘,即54321的结果,可以使用递归算法实现
(2)代码及注释
public class Test1 {
public static void main(String[] args) {
int n = fun(5);
System.out.println(n);
}
//定义一个方法求阶乘
public static int fun(int n) {
if(n == 0) {
return 1;
}else {
//使用递归,继续调用这个方法
return n*fun(n-1);
}
}
//第一次调用:return5*fun(4)
//第二次调用:return5*4*fun(3)
//第三次调用:return5*4*3*fun(2)
//第四次调用:return5*4*3*2*fun(1)
//第五次调用:return5*4*3*2*1*fun(0)
//第六次调用:return5*4*3*2*1*1=120
}
运行结果:
2.统计D盘总共有多少个文件
(1)问题
例如:想要得到D盘下总共有多少个文件(包含文件夹里的文件),可以使用递归算法实现
(2)代码及注释
import java.io.File;
public class Exam1 {
public static int count = 0;
public static void main(String[] args) {
//新建一个D盘路径
File d = new File("D:\\");
fun(d);
System.out.println(count);
}
//定义一个方法统计文件数量,接收传入参数是一个File对象
public static void fun(File file) {
//定义一个File类型的列表,存储这个File对象下的File对象
File[] list = file.listFiles();
//遍历这个File对象列表,如果是文件,就count+1,如果是文件夹,就继续调用这个fun方法
for(File f:list) {
try {
if(f.isFile()) {
count++;
}else {
fun(f);
}
}catch(Exception e) {
}
}
}
}
运行结果: