用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以内所有的斐波那契数字了,而且该函数可以无限次调用。
斐波那契数列是一种非常有趣的数列,之所以那么重要,让几乎所有的数学书都能提到,是因为无论是在数学界还是自然界,这个规律都十分重要,黄金分割在日常生活中也经常用到。这么有趣的数列,求解方式当然不仅仅局限于上述方法,还可以通过矩阵、线性代数递推,线性方程,母函数等多种方法进行求解。斐波那契数列在各个学科都会出现,它的很多漂亮性质让我们着迷,感兴趣的同学不妨继续深入探索,更好的了解这个有趣而且有用的数列。
用Python编写斐波那契数列(Fibonacci Sequence)相关推荐
- matlab 斐波那契数列Fibonacci Sequence
斐波那契数列Fibonacci Sequence 主代码 %% 清理可能存在的旧数据 clc; % 清屏 clear; % 清除变量 close; % 关闭可能存在的窗口 %% 调用主要代码 n = ...
- 用python输出斐波那契数列的前20项_python输出斐波那契数列
如何用Python输出一个Fibonacci数列有时候觉得自己像个神经病.既纠结了自己,又打扰了别人. #python3def fibo(n): if n受辱时的唯一办法就是忽视它,不能忽视它,就藐视 ...
- python利用列表计算斐波那契数列前30项并输出_python分享斐波那契数列示例分享 Python 分享斐波那契数列前20项和...
分享助python大神.斐波那契数列,编写程序,利用列具体内容 拜托拜托有时候,最痛苦的其实不是失去,而是你得到以后其实不快乐. ##缩进格式看图 l=[1,1] for i in range(28) ...
- python求斐波那契数列第n个数及前n项和_使用python求斐波那契数列中第n个数的值示例代码...
斐波那契数列(Fibonacci sequence),又称黄金分割数列.因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为"兔子数列&qu ...
- python利用列表计算斐波那契数列前30项_使用python计算斐波那契数列
定义 斐波那契数列(Fibonacci sequence),又称黄金分割数列. 因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子 (假定每对大兔每月能生产一对小兔 ...
- 斐波那契数列 (Fibonacci) 多种实现方法(Python)与详细介绍
斐波那契数列 Fibonacci Sequence 本文介绍了多种方式得到斐波那契数列或斐波那契数.斐波那契数列也称为"兔子数列".来源于兔子繁殖的预测.它的重要性体现在相邻两数之 ...
- 求解斐波那契数列(Fibonacci Numbers)算法居然有9种,你知道哪几种吗?
By LongLuo 斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为&q ...
- python编写递归函数、求斐波那契数列_利用Python实现斐波那契数列的方法实例
今天我们来使用Python实现递归算法求指定位数的斐波那契数列 首先我们得知道斐波那契数列是什么? 斐波那契数列又叫兔子数列 斐波那契数列就是一个数列从第三项开始第三项的值是第一项和第二项的和依次类推 ...
- python输出斐波那契数列前20项、每输出5个数换行_按要求编写程序:输出斐波那契数列的前20项,每行输出5项....
用循环语句编写一程序,要求输出下列图形 static void Main(string[] args) {  用C语言编写程序:键盘输入a和b两个整数,要求用函数求两个数 ...
最新文章
- python模拟内置函数reversed_Python内置函数reversed
- bean的scope
- 【转载】【FS】FATFS文件系统介绍(未完待续........2018.4.1)
- spring+quartz 完整例子
- zkcli远程连接_高级框架第一天RPC:远程过程调用
- python3集合(set)
- ssis面试题_SSIS面试问题
- 创业者应该了解的五大无服务器AWS服务
- 深入学习javascript:cookie
- 移植JDK,确实需要CPU指令级的工作
- 微信推送封面尺寸_微信公众号文章封面图尺寸应该是多大?
- 淘宝商品评论获取评论
- 如何使用Python解锁星河远征军的科幻旅途
- python培训总结报告
- HTML5:移动互联网的第二个苹
- 个人家用nas_希捷个人云评测:家用NAS中的佼佼者
- 新手微信小程序制作教程步骤详解!
- 全球名校AI课程库(1)| 深度学习专项课程『Deep Learning Specialization』
- bcd转ascii码 流程图_BCD码到ASCII码转换实例
- 高职院校计算机应用基础教学探讨,高职院校计算机应用基础课程教学改革探讨论文...