练习_使用递归计算阶乘和练习_递归打印多级目录和文件搜索
递归计算阶乘
阶乘:所有小于及等待该数的正整数的积。
代码:
public class study01 {
public static void main(String[] args) {
//调用递归方法计算阶乘
int factorial = new study01().factorial(10);
//输出结果
System.out.println("结果"+factorial);
}
/**
* 定义方法使用递归计算阶乘
* 5的阶乘:5!=5*(5-1)*(5-2)*(5-3)*(5-4)=5*4*3*2*1
* 递归结束的条件
* 获取到1的时候结束
* 递归的目的
* 获取下一个被乘的数字(n-1)
*/
public int factorial(int i){
if (i == 1) {
return 1;
}
return i*=factorial(i-1);
}
}
递归打印多级目录
分析:多级目录的打印,就是当目录的嵌套。遍历之前,无从知道到底有多少集目录,所以我们还是要使用递归实现
代码实现:
package com.yang.Test.FileStudy;
import java.io.File;
public class study01 {
public static void main(String[] args) {
new study01().getAllFile(new File("D:\\音乐"));
}
/**
* 定义一个方法,参数传递File类型的目录
* 方法中对目录进行遍历
* @param dir
*/
public void getAllFile(File dir){
File[] files = dir.listFiles();
for (File file : files) {
//对遍历得到的File对象file进行判断,判断是否是文件夹
if (file.isDirectory()) {
//file是一个文件夹,则继续遍历这个文件夹
//直接调用getAllFile方法即可;递归(自己调用自己)
getAllFile(file);
} else {
System.out.println(file);
}
}
}
}
文件搜索
练习_获取当前项目以.java的所有文件
package com.yang.Test.FileStudy;
import java.io.File;
public class study01 {
public static void main(String[] args) {
//
new study01().getAllFile(new File("F:\\java\\java代码\\exercises"));
}
public void getAllFile(File dir){
File[] files = dir.listFiles();
for (File file : files) {
if (file.isDirectory()) {
getAllFile(file);
} else {
String s = file.toString();
boolean endsWith = s.endsWith(".java");
if (endsWith){
System.out.println(file);
}
}
}
}
}