Solution 19: Fibonacci数列
问题描述
求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; } }