计算斐波那契数列前n项以及前n项的和
时间: 2023-11-18 17:02:42 浏览: 104
好的,让我来回答这个问题。首先,斐波那契数列是这样一个数列:1,1,2,3,5,8,13,21,34,55,…… ,它的公式是f(n) = f(n-1) + f(n-2),其中,f(1) = 1,f(2) = 1。那么,要计算斐波那契数列前n项,可以使用循环或者递归的方式来求解。具体实现如下:
方式一:循环
```
def fib(n):
if n <= 0:
return []
if n == 1:
return [1]
result = [1, 1]
for i in range(2, n):
result.append(result[i-1] + result[i-2])
return result
```
该函数的时间复杂度为O(n),空间复杂度也为O(n)。
方式二:递归
```
def fib(n):
if n <= 0:
return []
if n == 1:
return [1]
if n == 2:
return [1, 1]
result = fib(n-1)
result.append(result[-1] + result[-2])
return result
```
该函数的时间复杂度为指数级别,空间复杂度为O(n)。
至于前n项的和,可以在计算斐波那契数列的同时进行累加。代码如下:
```
def fib_sum(n):
if n <= 0:
return 0
if n == 1:
return 1
a, b = 1, 1
s = a + b
for i in range(2, n):
c = a + b
s += c
a, b = b, c
return s
```
该函数的时间复杂度为O(n),空间复杂度为O(1)。
阅读全文