斐波那契数实现方式有多种方法,最容易理解的为递归法,也可使用动态规划降低时间复杂度,本文给出递归法和动态规划两种方法的代码实现。
示例:
图1 斐波那契数输入输出示例
方法一:递归法
代码:
class Solution:
def fib(self, n):
if n == 0 or n == 1:
return n
else:
return self.fib(n - 1) + self.fib(n - 2)
方法二:动态规划法
代码:
class Solution:
def fib(self, n):
n1, n2 = 0, 1
for _ in range(n):
n1, n2 = n2, n1 + n2
return n1
解释:
1)求f(n)需要计算n-1次,例如计算f(4),需要计算f(4)、f(3)和f(2),故循环n次后取保存上一次计算结果的n1。