斐波那契数列是一个经典的数学序列,其中每个数字是前两个数字的和。序列的前几个数字是:0, 1, 1, 2, 3, 5, 8, 13, 21, 34, ...
斐波那契数列的定义如下:
def fibonacci_recursive(n):
if n <= 0:
return 0
elif n == 1:
return 1
else:
return fibonacci_recursive(n-1) + fibonacci_recursive(n-2)
def fibonacci_iterative(n):
a, b = 0, 1
for _ in range(n):
a, b = b, a + b
return a
def fibonacci_dynamic(n):
if n <= 0:
return 0
elif n == 1:
return 1
fib = [0] * (n + 1)
fib[1] = 1
for i in range(2, n + 1):
fib[i] = fib[i-1] + fib[i-2]
return fib[n]
原因:递归实现会重复计算很多子问题,导致时间复杂度为 O(2^n)。
解决方法:
def fibonacci_memoization(n, memo={}):
if n in memo:
return memo[n]
if n <= 0:
return 0
elif n == 1:
return 1
memo[n] = fibonacci_memoization(n-1, memo) + fibonacci_memoization(n-2, memo)
return memo[n]
通过这些方法,可以有效提高计算斐波那契数列的效率。
领取专属 10元无门槛券
手把手带您无忧上云