首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >斐波那契数列和斐波那契数

斐波那契数列和斐波那契数

作者头像
会洗碗的CV工程师
发布于 2022-11-29 00:43:24
发布于 2022-11-29 00:43:24
91700
代码可运行
举报
文章被收录于专栏:LongJava学习资料LongJava学习资料
运行总次数:0
代码可运行

一、什么是斐波那契数列

        斐波那契数列(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)(≥ 2,∈ N*)

二、求有m位的斐波那契数列

        好啦,此时我们已经知道原理了,那就很容易啦,我们可以使用集合对象ArrayList,泛型为BigInteger的集合对象来存放数列,由于斐波那契数列前两位都是1,所以我们可以把集合对象的前两位单独处理,剩下的就是一个for循环的事情啦。

        代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    //求前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的话,需要等待一下才可以出结果了,读者可以自行测验呢。

        代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    //求第m位斐波那契数列的值,如果m<3直接返回1
    public static BigInteger diGui_fibBuffRec(int m){
        if(m>=3){
            return diGui_fibBuffRec(m-1).add(diGui_fibBuffRec(m-2));
        }
        else
            return BigInteger.ONE;
    }
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-11-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验