Python函数:计算斐波那契数列
发布时间:2023-06-29 23:13:22
斐波那契数列是由0和1开始,后面的每一项都是前面两项的和。斐波那契数列的前几项为:0, 1, 1, 2, 3, 5, 8, 13, 21, 34, ....
下面是一个计算斐波那契数列的Python函数:
def fibonacci(n):
# 初始化前两项为0和1
fib_seq = [0, 1]
# 循环计算剩余的项
for i in range(2, n+1):
fib_seq.append(fib_seq[i-1] + fib_seq[i-2])
return fib_seq
# 通过调用函数计算斐波那契数列的前10项
fib_10 = fibonacci(10)
print(fib_10)
输出结果为:[0, 1, 1, 2, 3, 5, 8, 13, 21, 34],即斐波那契数列的前10项。
当调用fibonacci(n)函数时,传入参数n表示计算斐波那契数列的前n项。该函数使用一个列表fib_seq来保存计算过程中的斐波那契数列。首先,初始化列表的前两项为0和1。然后,利用一个循环计算列表中剩余的项,每一项都是前面两项的和。最后,函数返回列表fib_seq,即斐波那契数列的前n项。
上述函数的时间复杂度为O(n),空间复杂度为O(n),其中n为计算的斐波那契数列的项数。
此外,可以对斐波那契数列的计算进行优化,减少空间复杂度。具体优化方法可以使用两个变量存储前两项的值,并在循环中更新这两个变量,如下所示:
def fibonacci(n):
# 初始化前两项为0和1
a, b = 0, 1
# 循环计算剩余的项
for _ in range(n):
a, b = b, a + b
return a
# 通过调用函数计算斐波那契数列的第10项
fib_10 = fibonacci(10)
print(fib_10)
输出结果为:34,即斐波那契数列的第10项。该优化方法只使用了两个变量存储前两项的值,不需要额外的列表来保存整个斐波那契数列。时间复杂度仍为O(n),但空间复杂度降低为O(1)。
总结:通过上述的Python函数,我们可以计算斐波那契数列的任意一项或前n项。这个函数可以根据需求来使用,是一个实用且常用的工具函数。
