斐波那契数列的相关题目是面试常见的,所以我看了些资料总结记录一下这些小的知识点。
1. 元组实现
代码:
fibs = [0, 1]
for i in range(8):
fibs.append(fibs[-2] + fibs[-1])
print(fibs)
输出:
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
2. 迭代器实现
class Fibs:
def __init__(self):
self.a = 0
self.b = 1
def next(self):
self.a, self.b = self.b, self.a + self.b
return self.a
def __iter__(self):
return self
这将得到一个无穷的数列, 可以采用如下方式访问:
fibs = Fibs()
for f in fibs:
if f > 1000:
print(f)
break
else:
print(f)
3. 通过定制类实现
class Fib(object):
def __getitem__(self, n):
if isinstance(n, int):
a, b = 1, 1
for x in range(n):
a, b = b, a + b
return a
elif