代码
def fibonacci(n):
fib_list = [0, 1] # 初始的斐波那契数列,包含0和1
while len(fib_list) < n:
next_number = fib_list[-1] + fib_list[-2]
fib_list.append(next_number)
return fib_list[:n]
# 示例:计算前10个斐波那契数
n = 10
result = fibonacci(n)
print(f"前{n}个斐波那契数列: {result}")
概念
斐波那契数列前两个数都是1
,从第3个数开始,每个数是前两个数相加的和,可以记为f(n) = f(n - 1) + f(n - 2)
因此,斐波那契数列的前几项依次是:0, 1, 1, 2, 3, 5, 8, 13, 21, 34, …
代码功能
计算前10项的斐波那切数列
代码解释
这段代码使用 while
循环来生成斐波那契数列的列表。让我逐步解释:
- 条件:
while len(fib_list) < n:
表示当斐波那契数列的列表长度小于所需的项数n
时,继续执行循环。 - 生成下一个数:
next_number = fib_list[-1] + fib_list[-2]
计算当前列表最后两个元素的和,即前两个斐波那契数的和,得到下一个斐波那契数。 - 将下一个数添加到列表:
fib_list.append(next_number)
将计算得到的下一个斐波那契数添加到列表末尾。 - 循环条件更新:
while
循环继续,直到列表长度达到或超过所需的项数n
。
整个循环的目的是生成一个包含前 n
个斐波那契数的列表。在每一步中,计算新的斐波那契数,将其添加到列表中,然后重复这个过程,直到得到所需数量的斐波那契数。最终,函数返回一个包含前 n
个斐波那契数的列表。
扩展
也可以使用递归来实现,但是我劝你千万不要这么做,应为这样是个很烂的实现方式
def fib(n):
if n in (1, 2):
return 1
return fib(n - 1) + fib(n - 2)
# 打印前20个斐波那契数
for i in range(1, 21):
print(fib(i))