1.撰寫:可讓使用者輸入想計算的費氏(Fibonacci)數個數的程式
public static void main(String[] args) {
java.util.Scanner sc1 = new Scanner(System.in);
System.out.print("求幾個費氏數?");
int n = Integer.parseInt(sc1.nextLine());
switch (n) {
case 1:
case 2:
for (int f = 0; f <= n - 1; f++) {
System.out.printf("%d ", f);
}
break;
default:
//case >=3
int[] f_arr = new int[n];
f_arr[0] = 0;
f_arr[1] = 1;
for (int i = 2; i <= n - 1; i++) {
f_arr[i] = f_arr[i - 2] + f_arr[i - 1];
}
for (int f : f_arr) {
System.out.printf("%d ", f);
}
}
}
想了一段時間,多次從錯中修正,在 if 和 switch 間取捨也有猶豫一下,
最多次出現的 exception,是陣列長度與元素數量不符,
所以嘗試調度建立陣列物件的位置和條件式,
使變數 n 先決定陣列長度後,再進入迴圈,
還有因為 enhanced for loop & print 的位置起初置放於迴圈內,
直接拉到迴圈外會產生編譯錯誤,
故將 int[] f_arr 調整至迴圈外。
是題有成就感的題目。
沒有留言:
張貼留言