📅  最后修改于: 2023-12-03 14:50:48.563000             🧑  作者: Mango
给定一个数 n,编写一个函数,以长度为 n 的数组的形式返回斐波那契序列的前 n 项。
输入
n = 5
输出
[0, 1, 1, 2, 3]
斐波那契数列是指以 0 和 1 开始,每个数都是前两个数的和,即:0, 1, 1, 2, 3, 5, 8, 13, ....
由于斐波那契序列是递归定义的,我们可以使用递归函数来实现。具体来说,我们定义 fibonacci(n) 函数来获取前 n 个斐波那契数,并返回一个整数数组。这里我们使用递归函数获取斐波那契数。
def fibonacci(n: int) -> List[int]:
if n == 0:
return []
if n == 1:
return [0]
if n == 2:
return [0, 1]
result = [0, 1]
for i in range(2, n):
result.append(result[i-1] + result[i-2])
return result
这段代码首先检查输入的 n 是否小于等于 2,如果是,直接返回特殊的列表。如果 n 大于 2,则定义结果列表,并循环计算斐波那契数列中的每一项,结果追加到列表中并返回。
该算法的时间复杂度为 O(n)。在循环中,我们只对每个元素进行一次计算,所以每个元素被计算的次数为 1,整个算法的时间复杂度为 O(n)。
该算法的空间复杂度为 O(n)。在循环中,我们需要存储前 n 个斐波那契数,因此空间复杂度为 O(n)。