1. 程式人生 > 其它 >斐波那契數列的程式設計實現

斐波那契數列的程式設計實現

斐波那契數列

程式設計實現費式數列中第 n 項的數值並返回。
費式數列:1 1 2 3 5 8 13 21

分析

  1. 第 1 項和第 2 項固定為 1。
  2. 從第 3 項起每一個數值是前兩項的和。

遞迴實現

遞迴實現會影響程式的執行效能 不推薦使用

    public int recursion(int n) { // int n = 5; int n = 4; int n = 3; int n = 2; n = 1;
        // 當 n == 1 或 n == 2 時返回 1
        if (n == 1 || n == 2) {
            return 1;
        }
        // 否則是前兩者的和
        return recursion(n - 1) + recursion(n - 2);
        // 分析執行
        // recursion(5) => return recursion(4)+ recursion(3); => 5
        // recursion(4) => return recursion(3)+ recursion(2); => 3
        // recursion(3) => return recursion(2)+ recursion(1); => 2
        // recursion(2) => return 1;                          => 1
        // recursion(1) => return 1;                          => 1
    }

    public static void main(String[] args) {
        MathSeries series = new MathSeries();
        int num = series.seriesRecursion(40);
        System.out.println(num);
    }

遞推實現

	 public int seriesFor(int n) {
        // 當 n == 1 或 n == 2 時返回 1
        if (n == 1 || n == 2) {
            return 1;
        }
        int ia = 1; // 前 2 項
        int ib = 1; // 前 1 項
        // 從第 3 項開始計算
        for (int i = 3; i <= n; i++) {
            int result = ia + ib; // 前兩者的和
            ia = ib; // 將前第 1 項移至 2 項
            ib = result; // 將第一項設為前兩項的和
        }
        return ib;
    }

	public static void main(String[] args) {
        MathSeries series = new MathSeries();
        int num = series.seriesFor(10);
        System.out.println(num);
    }