java io流之遞迴
阿新 • • 發佈:2020-07-30
遞迴
概念:遞迴,指在當前方法內呼叫自己的這種現象
public void method(){ System.out.println(“遞迴的演示”); //在當前方法內呼叫自己 method(); }
遞迴分為兩種,直接遞迴和間接遞迴。
直接遞迴稱為方法自身呼叫自己。
間接遞迴可以A方法呼叫B方法,B方法呼叫C方法,C方法呼叫A方法。
public static void main(String[] args) { // TODO 自動生成的方法存根 System.out.println(sum(100)); System.out.println(get(10)); } public static void a() { a(); } //利用遞迴計算1~100的和 public static int sum(int n) { if(n==1) { return 1; }else { return n+sum(n-1); } } //利用遞迴求100的成績 public static int get(int n) { if(n==1) {return 1; }else { return n*get(n-1); } }
}
注意:遞迴一定要有條件限定,保證遞迴能夠停止下來,否則會發生棧記憶體溢位。
在遞迴中雖然有限定條件,但是遞迴次數不能太多。否則也會發生棧記憶體溢位。
public static void main(String[] args) { get(new File("F:\\java0512\\eclipse0512\\io0512")); } public static void get(File dir) {//獲取當前目錄這一級的檔案和資料夾物件陣列 File[] files=dir.listFiles(); for (File file : files) { //如果當前file物件是資料夾那麼繼續遍歷 if(file.isDirectory()) { //列印資料夾 System.out.println(file+"資料夾"); get(file); }else { //如果不是資料夾則直接列印檔案 System.out.println(file); } } } }
public class MyFilter implements FileFilter{
@Override
public boolean accept(File pathname) {
if(pathname.isDirectory()) {
return true;
}
return pathname.getName().toLowerCase().endsWith(".txt");
}
}
氣泡排序
public static void main(String[] args) { // 氣泡排序法 int[] arr= {7,1,6,22,11,3,2}; for (int i = 0; i < arr.length-1; i++) { for (int j = 0; j < arr.length-i-1; j++) { if(arr[j]>arr[j+1]) { int n=arr[j]; arr[j]=arr[j+1]; arr[j+1]=n; } } } for (int i : arr) { System.out.println(i); } } }