問題描述
求Fibonacci數列的第n項。Fibonacci數列為1,1,2,3,5,...
?
解決思路
(1) 遞歸,指數級時間復雜度;
(2) 循環,O(n)時間復雜度;
(3) 矩陣乘法,O(logn)時間復雜度;
(4) 公式法,O(1)時間復雜度。
?
程序
?
public class Fibonacci {public int getNthElemRec(int n) {if (n <= 0) {return -1;}if (n <= 2) {return 1;}return getNthElemRec(n - 1) + getNthElemRec(n - 2);}public int getNthElemNoRec(int n) {if (n <= 0) {return -1;}if (n <= 2) {return 1;}int a = 1, b = 1;int res = 0;while (n >= 3) {res = a + b;a = b;b = res;--n;}return res;}
}