用yield实现斐波那契数列
时间: 2024-04-21 08:20:32 浏览: 14
使用yield关键字可以实现一个生成器函数,通过生成器函数可以生成斐波那契数列。斐波那契数列是一个无限序列,每个数字都是前两个数字的和。
下面是使用yield实现斐波那契数列的代码示例:
```python
def fibonacci():
a, b = 0, 1
while True:
yield a
a, b = b, a + b
# 使用生成器函数生成斐波那契数列
fib = fibonacci()
for i in range(10):
print(next(fib))
```
上述代码中,定义了一个名为fibonacci的生成器函数。在函数内部使用while循环不断生成斐波那契数列的下一个数字,并通过yield关键字将该数字返回。在每次调用next()函数时,生成器函数会从上次yield语句处继续执行,生成下一个斐波那契数。
运行上述代码,会输出斐波那契数列的前10个数字:0, 1, 1, 2, 3, 5, 8, 13, 21, 34。
相关问题
python yield 斐波那契数列
下面是使用 Python 中的 yield 语句生成斐波那契数列的代码示例:
```python
def fibonacci():
a, b = 0, 1
while True:
yield a
a, b = b, a + b
# 输出前 10 个斐波那契数列
fib = fibonacci()
for i in range(10):
print(next(fib))
```
运行上述代码,将会输出前 10 个斐波那契数列:
```
0
1
1
2
3
5
8
13
21
34
```
在上述代码中,我们定义了一个名为 fibonacci 的生成器函数,它使用 while 循环和 yield 语句生成斐波那契数列。在每次循环中,我们使用 yield 语句返回当前的斐波那契数列,并更新 a 和 b 的值,以便下一次循环时生成下一个斐波那契数列。
使用python实现斐波那契数列
可以使用递归或循环的方式实现斐波那契数列。
使用递归实现:
```python
def fib(n):
if n <= 1:
return n
return fib(n-1) + fib(n-2)
```
使用循环实现:
```python
def fib(n):
if n <= 1:
return n
a, b = 0, 1
for i in range(n-1):
a, b = b, a + b
return b
```
使用生成器实现:
```python
def fib():
a, b = 0, 1
while True:
yield a
a, b = b, a + b
```
以上三种方法都可以实现斐波那契数列,但是当 n 很大时,递归方式的效率会很低,因为会重复计算很多次。循环和生成器方式则可以避免这个问题。