# 2019-11-11 上課範例 ## PT4_2.java ```java= import java.util.Scanner; public class PT4_2 { // ================ // 使用者的角色 public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.println("請輸入一個整數n:"); int n = in.nextInt(); in.close(); for (int i = 1; i <= n; i++) { drawStarts(i); } } // =========================================== // 開發者的角色 public static void drawStarts(int n) { for (int i = 0; i < n; i++) { System.out.print("*"); } System.out.println(); } } ``` ## PT4_3.java ```java= import java.util.Scanner; public class PT4_3 { // ======= // 使用者角色 public static void main(String[] args) { // step 1. Scanner in = new Scanner(System.in); System.out.println("請輸入三個整數a b c:"); int a = in.nextInt(); int b = in.nextInt(); int c = in.nextInt(); in.close(); // step 2. int max = max3(a, b, c); System.out.println("a=" + a); System.out.println("b=" + b); System.out.println("c=" + c); // step 3. System.out.println("max=" + max); } // ==================== // 開發者角色 public static int max3(int x, int y, int z) { return PT4_1.max2(PT4_1.max2(x, y), z); } } ``` ## MyMath.java ```java= /** * 處理數學相關的類別 * * @author kChen * @version 0.01 * @since 2019/11/11 * */ public class MyMath { /** * 輸入兩個整數找最大的整數 * * @param x 一個int * @param y 一個int * @return x和y 最大的 */ public static int max(int x, int y) { return (x >= y) ? x : y; } public static int max(int x, int y, int z) { return max(max(x, y), z); } public static int add(int x, int y) { return x + y; } public static int add(int x, int y, int z) { return add(add(x, y), z); } } ``` ## PT4_5.java 費氏數列遞迴版 ```java= import java.util.Scanner; public class PT4_5 { // ========= // 使用者 public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.println("請輸入一個整數n:"); int n = in.nextInt(); in.close(); // 取得目前系統的時間,單位:豪秒 long start_time = System.currentTimeMillis(); //求 Fn int Fn = F(n); long end_time = System.currentTimeMillis(); System.out.println("Fn=" + Fn); // end_time – start_time 就是執行的時間 System.out.println("遞迴版執行時間:" + (end_time - start_time)); } // ======== // 開發者 // 費氏數列遞迴版 public static int F(int n) { if (n == 0) return 0; if (n == 1) return 1; return F(n - 1) + F(n - 2); } } ``` ## PT4_5a.java 費氏數列迴圈版 ```java= import java.util.Scanner; public class PT4_5a { public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.println("請輸入一個整數n:"); int n = in.nextInt(); in.close(); // 取得目前系統的時間,單位:豪秒 long start_time = System.currentTimeMillis(); // 執行的程式碼 int Fn = F(n); long end_time = System.currentTimeMillis(); System.out.println("Fn=" + Fn); // end_time – start_time 就是執行的時間 System.out.println("迴圈版執行時間:" + (end_time - start_time)); } // ======== // 開發者 // 費氏數列迴圈版 public static int F(int n) { int Fn_2 = 0; int Fn_1 = 1; int Fn = 0; if (n == 0 || n == 1) return n; else { for (int i = 2; i <= n; i++) { Fn = Fn_1 + Fn_2; Fn_2 = Fn_1; Fn_1 = Fn; } return Fn; } } } ``` ###### tags: `Java計算機程式設計` `108-1`