- 目标:实现一个迭代器类,生成斐波那契数列的前 n 项。
时间: 2024-10-20 08:14:45 浏览: 36
python迭代器与生成器示例代码之生成斐波那契数列
实现一个迭代器类来生成斐波那契数列的前n项,通常会涉及两个基本步骤:首先定义一个内部类或私有类作为迭代器,负责维护当前项的状态以及递归计算下一项;然后在外层类中提供公共方法,包括构造函数初始化迭代器状态并返回迭代器实例。
下面是一个简单的 Python 示例:
```python
class FibonacciIterator:
def __init__(self, n):
self.n = n
self.current = 0
if n >= 2:
self.next_two = 1, 1
else:
self.next_two = (0, 1) if n == 1 else (1, 0)
def __iter__(self):
return self
def __next__(self):
if self.current < self.n:
current = self.next_two[0]
next_num = self.next_two[1]
self.next_two = (next_num, current + next_num)
self.current += 1
return current
else:
raise StopIteration
# 使用示例
fib_iterator = FibonacciIterator(10)
for num in fib_iterator:
print(num, end=' ')
```
在这个例子中,`FibonacciIterator` 类实现了 `__iter__` 和 `__next__` 方法,前者让这个类可以用于 `for` 循环,后者按照斐波那契序列的规则生成下一项。当达到给定的项数时,会抛出 `StopIteration` 异常终止迭代。
阅读全文