Python程序查找斐波那契数列(不使用递归)
斐波那契数列指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……,特别指出:第0项是0,第1项是1。从第三项开始,每一项都等于前两项之和。该数列自然界中广泛存在,例如”菠菜的排列方式”和 “家兔的繁殖问题”等。接下来我们将使用Python程序查找斐波那契数列,而不使用递归的方法。
更多Python相关文章,请阅读:Python 教程
背景知识
斐波那契数列的递归算法是较为简单的,但是效率很低。因此我们采用非递归的方式,来提高程序的执行效率。
代码实现(Python)
方法一:while循环
使用while循环的方式,我们可以依次求出斐波那契数列中每个数的值。
def fibonacci(n):
if n < 2:
return n
else:
a, b = 0, 1
for i in range(n - 1):
a, b = b, a + b
return b
方法二:生成器
生成器是Python中一个很强大的数据类型。它可以让你使用while循环从一个序列中依次取出数据,并且可以在循环过程中修改数据。下面是一个使用生成器来计算斐波那契数列数值的例子:
def fibonacci(n):
a, b = 0, 1
for i in range(n):
yield b
a, b = b, a + b
使用生成器的方式不需要一次性计算完所有的数值,而是可以在需要的地方取出数值,这样可以比第一种方法更为灵活。
结论
以上两种方法都能够很好地完成Python程序查找斐波那契数列(不使用递归)的任务。但是不同的场景下,选择不同的方法可以更好地改进程序效率,从而提高程序的执行效率。
极客笔记