https://blog.csdn.net/lanchunhui/article/details/50569311
1. 矩阵形式的通项
不妨令:
2. 偶数项和奇数项
因为
所以有:
)
3. 矩形形式求解 Fib(n)
因为涉及到矩阵幂次,考虑到数的幂次的递归解法:
- n 为奇数:
n = 2 k + 1 -
k 2 - )
-
- n 为偶数:
n = 2 k - )
-
k 2
4. Python
def fib(n):
if n > 0:
f0, f1 = fib(n // 2)
if n % 2 == 1:
return f0**2+f1**2, f1*(f1+2*f0)
return f0*(f0+2*(f1-f0)), f0**2+f1**2
return 0, 1
if __name__ == '__main__':
print([fib(i)[0] for i in range(10)])