斐波那契数列:
- 概念
- 代码实现
定义一个递归函数打印斐波那契数列某一项的值:
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