从0 1 1 2 3 5 开始
1 递归
# -*- coding:utf-8 -*-
class Solution:
def Fibonacci(self, n):
# write code here
if n==0:
return 0
elif n==1:
return 1
else:
return self.Fibonacci(n-1) + self.Fibonacci(n-2)
s = Solution()
print(s.Fibonacci(30))
递归时间消耗太大
2 循环
# -*- coding:utf-8 -*-
class Solution:
def Fibonacci(self, n):
# write code here
fib = [0,1]
for i in range(2,n+1):
fib.append(fib[i-1]+fib[i-2])
return fib[n]
n = int(raw_input())
s = Solution()
print(s.Fibonacci(n))
3 矩阵相乘与快速幂
对于一般的快速幂
# a^13,13 -> 1101 a^8 * a^4 * a^1
def fastpow(base, n, mod):
ans = 1
while n:
if n&1: # 当前位为1
ans &