美文网首页
Python使用三种语法生成斐波那契数列

Python使用三种语法生成斐波那契数列

作者: zlrs | 来源:发表于2018-12-10 13:11 被阅读0次

python3:

# 递归函数
# 返回一个值
def fib(n):
    if n == 1:
        return 0
    elif n == 2:
        return 1
    else:
        return fib(n-2) + fib(n-1)

# 生成器函数
# 返回一个生成器对象
def fib2(n):
    a,b = 0,1
    for i in range(n):
        yield a
        a,b =b,a+b

# 迭代类
class Fibs():
    def __init__(self,max):
        self.a = 0
        self.b = 1
        self.max = max
    def __iter__(self):
        return self
    def __next__(self):
        fib = self.a
        self.a,self.b = self.b,self.a + self.b
        if fib > self.max:
          raise StopIteration
        return fib
    
if __name__ == '__main__':
    print("递归")
    tmp = []
    for i in range(1, 11):
        tmp.append(fib(i))
    print(tmp)

    print("\n生成器")
    print(list(fib2(10)))

    print("\n迭代类")
    fibsobj = Fibs(1000)
    print(list(fibsobj))

输出结果:
递归
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]

生成器
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]

迭代类
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987]

相关文章

网友评论

      本文标题:Python使用三种语法生成斐波那契数列

      本文链接:https://www.haomeiwen.com/subject/cyurhqtx.html