遞歸

用遞歸的方法計(jì)算1~n
/**
* 遞歸 在一個(gè)方法內(nèi)部 對(duì)自身進(jìn)行調(diào)用
* 用簡(jiǎn)單的程序解決復(fù)雜的問題
* 構(gòu)造函數(shù)不能用遞歸 必須要有 結(jié)束的條件(保證其能停下來 要不然會(huì)有占內(nèi)存溢出)
* 直接遞歸 和間接遞歸
* main方法壓棧執(zhí)行? 直接遞歸方法 調(diào)用方法? 會(huì)在棧內(nèi)存中一直調(diào)用a
*
* 使用遞歸時(shí) 首先要判斷他的結(jié)束條件是什么 在判斷他的方法目的 是加減乘除
*
*/
public class Demo {
public static void main(String[] args) {//程序執(zhí)行的入口
? ? ? ? //構(gòu)造函數(shù)不能遞歸 計(jì)算1到n之間的和不推薦 建議使用for循環(huán)
? ? ? ? /*int sum1 = sum(3);
System.out.println(sum1);*/
? ? ? ? int j=jc(5);
System.out.println(j);
}
public static int sum(int n){//n是3? 2 1(結(jié)束條件)
? ? ? ? //獲取到下一個(gè)被加的數(shù)字
? ? ? ? if (n==1){//結(jié)束條件 到1 未知
? ? ? ? ? ? return 1;
}
return n+sum(n-1);//結(jié)束條件
? ? }
//5的階乘 5 4 3 2 1(結(jié)束條件是1) 目的乘法的目的 方法的主體不變 參數(shù)改變
? ? public static int jc(int a){
if (a==1){
return 1;
}
return a*jc(a-1);
}
}
遞歸打印多及目錄? 遞歸就會(huì)用到方法?

文件搜索?遞歸

過濾器?遞歸文件搜索的優(yōu)化? 用于過濾文件?抽象方法?過濾文件accept??
fileFilter?抽象路徑名的過濾器? fileNameFilter?實(shí)現(xiàn)此接口的類是咧可用于過濾器文件名?file dir目錄

過濾規(guī)則
public class FileNameFilter {
public static void main(String[] args) {
File file1 =new File("F:\\ideawork");
getAllFile(file1);
}
public static void getAllFile(File dir){
// System.out.println(dir);
/**
? ? ? ? * 過濾規(guī)則 pathname 是文件或者是.java結(jié)尾的文件返回true
? ? ? ? * 匿名內(nèi)部類 傳遞對(duì)象
? ? ? ? */
// FileFilter fileFilter = new FileFilter();
//File[] files=dir.listFiles(fileFilter);
/* File[] files=dir.listFiles(new FileFilter() {
@Override
public boolean accept(File pathname) {
? ? ? ? ? ? ? ? //過濾隊(duì)則 pathname是文件加.java
return pathname.isDirectory()||pathname.getName().endsWith(".java");
}
});*/
? ? ? //匿名內(nèi)部類只用lambda表達(dá)式
? ? ? /* File[] files = dir.listFiles((File pathname)->{
return pathname.isDirectory()||pathname.getName().endsWith(".java");
});*/
? ? ? //簡(jiǎn)化
? ? ? ? File[] files = dir.listFiles((/*File*/ pathname)-> pathname.isDirectory()||pathname.getName().endsWith(".java")
);
/*
File[] files=dir.listFiles(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
return new File(dir,name).isDirectory()||name.toLowerCase().endsWith(".java");
}
});*/
? ? ? ? //使用lambda表達(dá)式 優(yōu)化匿名內(nèi)部類 接口中只有一個(gè)抽象方法accept
? ? ? /* File[] files=dir.listFiles((*//*參數(shù)*//*File d,String name)->{
return new File(d,name).isDirectory()||name.toLowerCase().endsWith(".java");
});*/
? ? ? ? //簡(jiǎn)略lambda
? ? ? ? /*File[] files=dir.listFiles((*//*參數(shù)*//**//*File*//* d,*//*String*//* name)->
*//*return*//* new File(d,name).isDirectory()||name.toLowerCase().endsWith(".java")
);*/
//
? ? ? ? for (File file : files) {
if (file.isDirectory()){
getAllFile(file);
}else {
System.out.println(file);
}
}
}