📅  最后修改于: 2023-12-03 15:40:01.707000             🧑  作者: Mango
Fibonacci 数列指的是这样一个数列:1、1、2、3、5、8、13、21、34、…… 这个数列从第三项开始,每一项都等于前两项之和。
在计算机编程中,Fibonacci 数列被广泛运用,例如编写递归函数、动态规划算法等。
递归实现 Fibonacci 数列的代码如下:
def fibonacci_recursive(n):
if n <= 1:
return n
else:
return fibonacci_recursive(n-1) + fibonacci_recursive(n-2)
这里使用了递归的方式实现,但是递归实现的时间复杂度为O(2^n),时间效率较低。
我们还可以使用迭代的方式实现 Fibonacci 数列:
def fibonacci_iterative(n):
if n == 0:
return 0
elif n == 1:
return 1
else:
a, b = 0, 1
for i in range(1, n):
a, b = b, a + b
return b
相对于递归实现,迭代实现的时间复杂度为O(n),效率更高。
在实现的时候,我们还可以使用动态规划的思想:
def fibonacci_dp(n):
if n == 0:
return 0
elif n == 1:
return 1
else:
dp = [0] * (n + 1)
dp[1] = 1
for i in range(2, n + 1):
dp[i] = dp[i-1] + dp[i-2]
return dp[n]
动态规划是一种时间复杂度比较低的解法,其时间复杂度为O(n)。
以上就是 Fibonacci 数列的三种不同实现方式,每种方式各有优缺点,我们根据实际情况选择使用即可。