Python | 实现一个以斐波那契数列为算法的生成器

斐波那契数列:

  • 概念
    在这里插入图片描述
  • 代码实现

定义一个递归函数打印斐波那契数列某一项的值:

def fibonacci_sequence(n):
    """定义一个递归函数打印斐波那契数列某一项的值"""
    if n == 0 or n == 1:
        return n
    else:
        return fibonacci_sequence(n - 1) + fibonacci_sequence(n - 2)


if __name__ == '__main__':
    n = int(input('请输入n:'))
    result = fibonacci_sequence(n)
    print(f'斐波那契数列第{n}的值为:{result}')

运行结果

请输入n:5
斐波那契数列第5的值为:5

请输入n:0
斐波那契数列第0的值为:0


定义一个函数打印斐波那契数列的前 n 项:

def fibonacci_sequence(items):
    """打印斐波那契数列的前 n 项"""
    a, b, n = 0, 1, 0
    # 首先打印数列第 0 项
    print(b - 1, end='\t')
    # 打印数列剩下的 n - 1 项
    while n < items - 1:
        print(b, end='\t')
        a, b = b, a + b
        n += 1


if __name__ == '__main__':
    n = int(input('请输入n:'))
    fibonacci_sequence(n)

运行结果

请输入n:6
0	1	1	2	3	5	


在函数中使用 yield 关键字实现一个以斐波那契数列为算法的生成器:

def fibonacci_sequence(items):
    """实现一个以斐波那契数列为算法的生成器 0 1 1 2 3 5..."""
    a, b, n = 0, 1, 0
    # 首先生成数列第 0 项
    yield b - 1
    # 生成数列剩下的 n - 1 项
    while n < items - 1:
        yield b
        a, b = b, a + b
        n += 1


if __name__ == '__main__':
    n = int(input('请输入n:'))
    g = fibonacci_sequence(n)
    # 循环遍历生成器 g
    for i in g:
        print(i, end='\t')

运行结果

请输入n:6
0	1	1	2	3	5	

猜你喜欢

转载自blog.csdn.net/qq_44214671/article/details/110939764