使用Python创建斐波那契数列
class Fib:
"""
斐波那契数列构造类
迭代方法实现
"""
def __init__(self):
self.a = 0
self.b = 1
def __next__(self):
self.a, self.b = self.b, self.a + self.b
return self.b
def __iter__(self):
return self
@classmethod
def getIndex(cls, index):
"""
获得斐波那契数列第index项的值
:param index: 下标
:return: 值
"""
# fib_iter = iter(Fib())
if index == 0:
return 0
elif index == 1:
return 1
else:
fib = Fib()
for i in range(index-2):
next(fib)
return next(fib)
@staticmethod
def get_fib_list(length):
"""
获得长度为length的斐波那契数列
:param length: 长度
:return: 数列 list
"""
fib_list = [0, 1]
fib = Fib()
for _ in range(length-2):
fib_list.append(next(fib))
return fib_list
if __name__ == '__main__':
print(Fib.getIndex(2))
print(Fib.get_fib_list(10))
结果:
1
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]