📅  最后修改于: 2023-12-03 14:46:15.319000             🧑  作者: Mango
斐波那契数列指的是以下数列: 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, ...
即第 1 和第 2 个数都是 1,之后的每个数都是由前两个数相加而得出。
在 Python 中,我们可以使用循环或递归的方式来打印斐波那契数列。
def fibonacci(n):
a, b = 1, 1
for i in range(n):
yield a
a, b = b, a + b
# 打印前 10 个斐波那契数
for i in fibonacci(10):
print(i)
输出为:
1
1
2
3
5
8
13
21
34
55
使用循环的方式比较简单,我们定义两个初始值为 1 的变量 a 和 b,然后使用 for 循环打印出前 n 个斐波那契数。
这里我们使用了 yield 关键字,可以使函数成为一个生成器(generator),这样可以避免使用列表将斐波那契数列全部保存。
def fibonacci(n):
if n == 1 or n == 2:
return 1
else:
return fibonacci(n - 1) + fibonacci(n - 2)
# 打印前 10 个斐波那契数
for i in range(1, 11):
print(fibonacci(i))
输出为:
1
1
2
3
5
8
13
21
34
55
使用递归的方式虽然代码量比较少,但是效率比较低。因为递归会造成函数的多次调用,相当于多次计算,造成了时间和空间的浪费。
因此,建议在实际开发中使用循环的方式来实现打印斐波那契数列。