斐波那契數列的程式設計實現
阿新 • • 發佈:2021-08-22
斐波那契數列
程式設計實現費式數列中第 n 項的數值並返回。
費式數列:1 1 2 3 5 8 13 21
分析
- 第 1 項和第 2 項固定為 1。
- 從第 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); }