def fib(n):
if n<=1:
return 1
else:
return n * fib(n-1)
def fib(n):
a, b = 0, 1
for i in range(n):
a, b = b, a + b
return a
print(fib(10))
1 1 2 3 5 8 13 21 34 ......
X 1 1 1 1 1 1
1 0 1 0 1 0
--------------------------------
1 1 2 1 3 2 5 3
1 0 1 1 2 1 3 2
F^1 F^2 F^3 F^4 ... f^n
可以观察到矩阵[[1,1],[1,0]]在每次相乘自身后,第一个数既是斐波那契数列的数字
所以我们就可以使用[[1,1],[1,0]]矩阵的n-1次方来实现第n个斐波那契数列的数字求解
import numpy as np
x = np.mat([[1,1],[1,0]]) # 创建矩阵
def fib(n):
return int((x**(n-1))[:1,:1])
print(feibo(10))
# 55
未完待续。。。