Oracle 12c Data Guard搭建(一) (r10筆記第57天)
阿新 • • 發佈:2022-05-04
概述
以程式設計的角度來看,遞迴指的是方法定義中呼叫方法本身的現象
遞迴解決問題的思路
把一個複雜的問題層層轉化為一個與原問題相似的規模較小的問題來求解
遞迴策略只需少量的程式就可以描述出解題過程所需要的多次重複計算
遞迴解決問題要找到兩個內容
遞迴出口:否則會出現記憶體溢位
遞迴規則:與原問題相似的規模較小的問題
1 public class DiGuiDemo { 2 public static void main(String[] args) { 3 //回顧不死神兔問題:求第20個月兔子的對數 4 //每個月的兔子對數:1,1,2,3,5,8...5 int[] arr = new int[20]; 6 7 arr[0] = 1; 8 arr[1] = 1; 9 10 for (int i = 2; i < arr.length; i++) { 11 arr[i] = arr[i - 1] + arr[i - 2]; 12 13 } 14 System.out.println(arr[19]); 15 System.out.println(f(20)); 16 } 17 18 /*19 遞迴解決問題,首先要定義一個方法 20 定義一個方法f(n);表示第n個月的兔子對數 21 那麼,第n-1個月的兔子對數f(n-1) 22 同理,第n-2個月的兔子f(n-2) 23 24 //StackOverflowError:當堆疊溢位發生時丟擲一個應用程式遞迴太深 25 26 */ 27 public static int f(int n) { 28 if (n == 1 || n == 2) { 29 return 1;30 } 31 return f(n - 1) + f(n - 2); 32 } 33 34 }
1 /* 2 案例:遞迴求階乘 3 需求:用遞迴求5的階乘,並把結果在控制檯輸出 4 */ 5 public class DiGuiDemo2 { 6 public static void main(String[] args) { 7 System.out.println("5的階乘是:" + f(5)); 8 } 9 10 //定義一個方法,用於遞迴求階乘 11 public static int f(int n) { 12 if (n == 1) { 13 return 1; 14 } 15 16 return n * f(n - 1); 17 } 18 }
記憶體:
遍歷目錄
1 import java.io.File; 2 3 /* 4 案例:遍歷目錄 5 需求:給定一個路徑E:\\itcast,請通過遞迴完成遍歷該目錄下的所有內容, 6 並把所有檔案的絕對路徑輸出在控制檯 7 */ 8 9 public class DiGuiDemo3 { 10 public static void main(String[] args) { 11 //根據給定的路徑建立物件 12 File f = new File("E:\\itcast"); 13 14 get(f); 15 } 16 17 //定義一個方法。 18 public static void get(File f) { 19 //獲取給定目錄下所有內容 20 File[] fileArray = f.listFiles(); 21 //遍歷該file陣列,得到每一個file物件 22 if (null != fileArray) { 23 for (File file : fileArray) { 24 //判斷該file是否是目錄 25 if (file.isDirectory()) { 26 //是,遞迴呼叫 27 get(file); 28 } else { 29 //不是,獲取絕對路徑,輸出 30 System.out.println(file.getAbsolutePath()); 31 } 32 } 33 } 34 35 } 36 37 }