从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 = ans*base
ans = ans%mod

本文探讨了如何使用Python3来实现斐波那契数列,分别介绍了递归、循环以及利用矩阵相乘和快速幂的方法。递归方法虽然直观但效率较低,而矩阵乘法和快速幂则提供了更高效的解决方案。
最低0.47元/天 解锁文章
1757

被折叠的 条评论
为什么被折叠?



