Java - 斐波那契(遞歸、或不遞歸)
阿新 • • 發佈:2017-09-01
str int() args 第一個 imp arr pack 長度 true
不遞歸
package com.ikoo; public class NoRecursion { public static void main(String[] args) { int front = 1; int center = 1; int after = 0; for (int i = 1; i <= 10; i++) { if (i == 1 || i == 2) { System.out.print(1 + " "); } else { after = front + center; front = center;// 第二個數作為下一次求和第一個數 center = after;// 第三個數作為下一次求個的第二個數 System.out.print(after + " "); } } } }
1 1 2 3 5 8 13 21 34 55
遞歸
package com.ikoo; import java.util.Scanner; public class FibonacciSequence { public static void main(String[] args) { System.out.print("輸入數列長度:"); Scanner scanner = new Scanner(System.in); int num = scanner.nextInt(); for (int i = 1; i <= num; i++) { System.out.print(getFibonacci(i) + "\t"); if (i % 5 == 0) { System.out.println(); } } } /** * 遞歸思想 * * @param i 數列長度(也對應著數列下標) * @return 數列中第 i 位上的對應的值 */ public static int getFibonacci(int i) { if (i == 1 || i == 2) { return 1; } return getFibonacci(i - 1) + getFibonacci(i - 2); } }
輸入數列長度:10 1 1 2 3 5 8 13 21 34 55
遞歸 - 數組
package com.ikoo; import java.util.Arrays; import java.util.Scanner; public class FibonacciArray { public static void main(String[] args) { System.out.print("輸入斐波那契數列長度:"); Scanner scanner = new Scanner(System.in); int len = scanner.nextInt(); int[] arr = new int[len]; FibonacciArray.getFibonacc(arr); } /** * 遞歸思想 - 數組 * * @param arr */ public static void getFibonacc(int[] arr) { for (int i = 0; i < arr.length; i++) { if (i == 0 || i == 1) { arr[i] = 1; } else { arr[i] = arr[i - 1] + arr[i - 2]; } } System.out.println(Arrays.toString(arr)); } }
輸入斐波那契數列長度:10 [1, 1, 2, 3, 5, 8, 13, 21, 34, 55]
Java - 斐波那契(遞歸、或不遞歸)