传统递归缺点:重复计算
改进方法:
1、递归关系是的优化。记录每次计算的结果,类似动态规划的解法,复杂度O(N);
2、求解通项式。纯数学解法,复杂度直接是O(1),很牛;
3、分治策略。数学的矩阵方法,得出共通式(Fn Fn-1)=(F1 F0)*An-1,再利用二进制表示An的值,即用二进制表示n的值,如下:
n = ak*2k + ak-1*2k-1 + ... + a1*2 + a0
An = Aak*2k + ak-1*2k-1 + ... + a1*2 + a0 = (A2k)ak * (A2k-1)ak-1 * ... *(A21)a1 * Aa0
复杂度O(log2N)
数学方法很NB!