1. 程式人生 > >Java - 斐波那契(遞歸、或不遞歸)

Java - 斐波那契(遞歸、或不遞歸)

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 - 斐波那契(遞歸、或不遞歸)