700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 用Python编写斐波那契数列(Fibonacci Sequence)

用Python编写斐波那契数列(Fibonacci Sequence)

时间:2018-05-08 08:57:22

相关推荐

用Python编写斐波那契数列(Fibonacci Sequence)

斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波那契数列以如下被以递归的方法定义:F(0)=0,F(1)=1, F(n)=F(n-1)+F(n-2)(n>=2,n∈N*)在现代物理、准晶体结构、化学等领域,斐波那契数列都有直接的应用,美国数学会从1963起专门出版了以《斐波那契数列季刊》为名的一份数学杂志,用于专门刊载这方面的研究成果。

这个数列从第3项开始,每一项都等于前两项之和。

假设我们编写一小段Python代码来实现斐波那契数列:

fibs = [0,1]for i in range(8):fibs.append(fibs[-2]-fibs[-1])print(fibs)

运行后,fibs会包含斐波那契数列的前10个数字:

[0, 1, -1, 2, -3, 5, -8, 13, -21, 34]

当然,如果想得到任意多个数字,可以加入int(input())来设定数字,作为动态范围的长度使用,从而改变for语句块中循环次数:

fibs = [0,1]num = int(input('你想得到多少斐波那契数字?'))for i in range(num-2):fibs.append(fibs[-2]+fibs[-1])print(fibs)

运行,显示下图第一行,输入数字10,得到和上图同样的结果:

你想得到多少斐波那契数字?10[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]

当然,程序员都是一帮很懒的家伙,不是说他们从不做事,而是从来不喜欢做无用功。这次大家得到了10个斐波那契数字,那下一次如果需要二十个,难道他们再把这段代码输入一遍?OK,如果你有耐心可以再输一遍,但是程序员可不会这么干。

程序员会怎么做呢?先定义一个斐波那契数列的函数,以后每次需要用到这个函数的时候,直接调用即可。

所以,假如我们先生成一个fibo.py的文件,输入:

def fib(n): #定义到n的斐波那契a,b = 0,1while b < n:print(b, end=' ')a, b = b, a+bprint()def fib2(n): #返回到n的斐波那契数列result = []a, b =0, 1while b < n:result.append(b)a, b = b, a+breturn result

将文件保存到python.exe文件的同一目录下,比如我的.py文件都放在C:\Users\Administrator\AppData\Local\Programs\Python\Python36,打开Python解释器,即Python IDLE,输入:

>>> import fibo>>> fib(1000)1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 >>> fib2(1000)[1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987]>>>

当然,为了文件夹的规整,你可以将fibo.py这个文件单独放到一个空文件夹中, 比如我新建了一个C:\Users\Administrator\AppData\Local\Programs\Python\Python36\fibonacci,需要注意的是,为了在import的时候可以找到fibo.py这个文件,必须在fibonacci这个文件夹中创建一个init.py的空文件夹才可以运行(init前面有两个_):

>>> import fibonacci.fibo>>> f=fibonacci.fibo>>> f.fib(1000)1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 >>> f.fib2(1000)[1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987]>>>

这样,我们就可以顺利地找到1000以内所有的斐波那契数字了,而且该函数可以无限次调用。

斐波那契数列是一种非常有趣的数列,之所以那么重要,让几乎所有的数学书都能提到,是因为无论是在数学界还是自然界,这个规律都十分重要,黄金分割在日常生活中也经常用到。这么有趣的数列,求解方式当然不仅仅局限于上述方法,还可以通过矩阵、线性代数递推,线性方程,母函数等多种方法进行求解。斐波那契数列在各个学科都会出现,它的很多漂亮性质让我们着迷,感兴趣的同学不妨继续深入探索,更好的了解这个有趣而且有用的数列。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。