Python:实现高效斐波那契数列计算(附完整代码)
斐波那契数列是一个非常经典的数列,它的每个数都是前两个数之和,如下所示:
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, …
在Python中,我们可以用递归函数来计算斐波那契数列,但是这样的方法效率很低,因为它会重复计算很多数值。为了提高计算效率,我们可以使用另一种技术,称为记忆化搜索(Memoization)。
记忆化搜索的思路很简单:我们首先创建一个数组来存储计算过的值,当需要计算某个斐波那契数时,我们首先检查它是否已经存在于数组中,如果是,直接返回结果;否则,我们计算该数并将它存入数组中以备后续使用。
下面是代码实现:
def fibonacci(n):
# 空数组初始化
memo = [None] * (n + 1)
return fib(n, memo)
def fib(n, memo):
# 已经计算过的值直接返回
if memo[n] is not None:
return memo[n]
# 当 n=0 或 n=1 时,返回n
if n == 0 or n == 1:
result = n
else:
# 计算斐波那契数列
result = fib(n-1, memo) + fib(n-2, memo)
# 将计算结果存入数组中
memo[n] = result
return result
我们可以通过调用fibonacci函数来计算斐波那契数列的第n项,比如:<