📅  最后修改于: 2023-12-03 15:40:05.309000             🧑  作者: Mango
斐波那契数列是指:第一项、第二项为1,从第三项起,每一项为前两项之和。也就是说,这个数列的前几项为:
1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, ...
在 Python 中,我们可以使用生成器来生成斐波那契数列,下面是一个示例:
def fib():
a, b = 0, 1
while True:
yield a
a, b = b, a + b
这里我们使用了 yield
语句来指定一个生成器。yield
语句可以让函数在运行时暂停,并返回一个值给调用方,同时保留函数的所有状态,以便函数在下一次调用时从其离开的地方继续执行。
在 fib()
函数中,我们先初始化了两个变量 a
和 b
,分别为数列的前两项(0 和 1)。然后通过一个无限循环(while True:
)来不断地生成数列中的下一项(yield a
),并实现数列的递推式 a, b = b, a + b
。
我们可以使用 for
循环来输出前 n 项斐波那契数列:
for i, f in enumerate(fib()):
if i >= n:
break
print(f)
其中 enumerate(fib())
会生成一个迭代器,每次迭代会返回一个包含当前项的下标和值(即 (i, f)
)的元组。我们通过判断下标是否超过了 n 来停止循环。
完整代码:
def fib():
a, b = 0, 1
while True:
yield a
a, b = b, a + b
n = 10
for i, f in enumerate(fib()):
if i >= n:
break
print(f)
输出结果:
0
1
1
2
3
5
8
13
21
34
这就是使用生成器在 Python 中生成斐波那契数列的方法。