斐波那契数列和斐波那契数
一、什么是斐波那契数列
斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(Leonardo 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*)
二、求有m位的斐波那契数列
好啦,此时我们已经知道原理了,那就很容易啦,我们可以使用集合对象ArrayList,泛型为BigInteger的集合对象来存放数列,由于斐波那契数列前两位都是1,所以我们可以把集合对象的前两位单独处理,剩下的就是一个for循环的事情啦。
代码如下:
//求前m位的斐波那契数列,并把他们存到ArrayList集合中public static ArrayList<BigInteger> fibBuffRec (int m) {ArrayList<BigInteger> fibRec = new ArrayList<>(m);fibRec.add(BigInteger.ONE);fibRec.add(BigInteger.ONE);for(int i = 3;i<=m;i++){fibRec.add(fibRec.get(i-3).add(fibRec.get(i-2)));}return fibRec;}
三、求第m位的斐波那契数
那么,我为什么不先把求第m位斐波那契数放到第二个标题呢?其实这里我想说的是,如果m的值比较大的话,比如说m>40的话,如果是在比赛的话,就不建议使用以下方法,因为这样执行过程会比较慢,建议先用上面方法求出有m位的斐波那契数列,然后直接使用ArrayList.get(m),直接获得即可,这样算法的空间度虽然说比较大,但是速度很快。如果m<40的话,就可以直接用递归的方法求第m位斐波那契数。如果m>40的话,需要等待一下才可以出结果了,读者可以自行测验呢。
代码如下:
//求第m位斐波那契数列的值,如果m<3直接返回1public static BigInteger diGui_fibBuffRec(int m){if(m>=3){return diGui_fibBuffRec(m-1).add(diGui_fibBuffRec(m-2));}elsereturn BigInteger.ONE;}
斐波那契数列和斐波那契数相关推荐
- matlab斐波那契数列画图,斐波拉契数列 斐波那契数列 matlab程序
斐波那契数列数列从第3项开始,每一项都等于前两项之和. 例子:数列 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,25 ...
- c语言斐波那契数列_斐波那契数列之美
美妙绝伦的基本算法 Image by Gerd Altmann on Pixabay 在研究和进行有关数据处理,计算相关计算机或数学运算的研究时,我们遇到了很多算法. 即使有时候我们不太喜欢数学,但我 ...
- python中斐波那契数列_斐波那契数列–在Python,JavaScript,C ++,Java和Swift中进行了解释...
python中斐波那契数列 by Pau Pavón 通过保罗·帕文(PauPavón) The Fibonacci sequence is, by definition, the integer s ...
- 斐波那契数列——输出斐波那契数列的第n项
**斐波那契数列有两种形式 1.从0开始 0 1 1 2 3 5 8........ 2.从1开始 1 1 2 3 5 8 13......... 第一二项固定,后面一项等于前面两项的和. *要输出 ...
- 通过c语言来实现斐波那契数列。斐波那契数列指的是这样一个数列 1, 1, 2, 3, 5, 8, 13...这个数列从第3项开始,每一项都等于前两项之和。
斐波那契数列是一组第一位和第二位为1,从第三位开始,后一位是前两位和的一组递增数列, 像这样的:0.1.1.2.3.5.8.13.21.34.55...... 这个数列从第3项开始,每一项都等于前两项 ...
- python实现斐波那契数列_斐波那契数列:python实现和可视化
1 说明 ==== 1.1 斐波那契数列的介绍. 1.2 斐波那契数列是上帝的指纹,大自然中随处可见,目前广泛应用到黄金分割线的布局美和股市等预测等等. 1.3 斐波那契数列的Python的matpl ...
- c语言斐波那契数列_斐波那契数列趣闻
问 题 提 出 著名的兔子繁殖问题 意大利著名数学家斐波那契曾经在他的<算盘全书>一书中提出了一个有趣的问题:如果有一对兔子,每一个月都生下一对小兔,而它们所生下的每一对小兔在出生后的第三 ...
- 斐波那契数列_菲波那契数列是指这样的数列: 数列的第一个和第二个数都为1,接下来每个数都等于前面2个数之和。给出一个正整数a,要求菲波那契数列中第a个数对1000取模的结果是多少。
描述 菲波那契数列是指这样的数列: 数列的第一个和第二个数都为1,接下来每个数都等于前面2个数之和.给出一个正整数a,要求菲波那契数列中第a个数对1000取模的结果是多少. 格式 输入格式 第1行是测 ...
- 斐波那契数列的四种实现
来自:Crossin的编程教室 孔乙己自己知道不能和他们谈天,便只好向 Intern 说话.有一回对我说道,"你写过代码么?"我略略点一点头.他说,"写过代码,--我便考 ...
最新文章
- poj 2063完全背包
- 如何向亲戚们解释人工智能可以干啥?
- selenium环境搭建1
- jquery获取data-*返回undefined小记
- 高级数据结构与算法 | 哈希 :哈希冲突、负载因子、哈希函数、哈希表、哈希桶
- Redis问的太深入,面试官说:“你先回去等通知吧“!
- arcgis python 百度网盘 视频_arcgis软件零基础入门视频教程27讲百度网盘链接
- Java2022面试题集锦
- go get报错 i/o timeout的解决办法
- FlashFXP如何破解
- 【原创抖音互动无人直播项目大鱼吃小鱼,进入直播间的用户开始吃鱼,吃的鱼越多等级越高越厉害】
- java程序实现短信发送(可调用免费短信接口)
- To invoke and to begin invoke, that is a question.
- Ospf Forwarding address路由选路的影响
- 图形之可见面判别算法
- 如何看待程序员的薪资倒挂现象
- nlp--常用分词方法
- ipv4v6双栈技术_IPv6过渡技术之双栈技术
- 腾讯正式推出密码保护卡,貌似对火狐用户重视不够
- Mandelbrot 并行实现