斐波那契二种实现方式对比

312 阅读2分钟

前言

斐波那契数列(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)在现代物理、准晶体结构、化学等领域,斐波纳契数列都有直接的应用,为此,美国数学会从 1963 年起出版了以《斐波纳契数列季刊》为名的一份数学杂志,用于专门刊载这方面的研究成果

定义

斐波那契数列指的是这样一个数列: 斐波那契数列:1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233…… 规则:第一项和第二项是1,之后的每一项为之前两项的和

实现方案

这种实现方式有二种一种是递归, 但是效率很低,

递归实现方案:

public static int test(int n){
    if(n<2){
        return n;
    }
    return test(n-1)+test(n-2);
}

上面这种实现方案在数据量大了以后, 效率不是一般的低, 谁公司敢用,估计离倒闭不远了,那么什么原因导致它效率低呢?我们来分析下,比如就求第5项

未命名文件 (1).png

你会发现效率低的原因是因为会重复的求之前已经存在的,那么就引用了我们第二种做法,

public static int test2(int n){
    if(n<=1){
        return n;
    }
    int first = 0;
    int second = 1;
    //这里用到for循环只是表示要加多少次,
    for(int i=0;i<n-1;i++){
        int sum = first+second;
        first = second;
        second = sum;
    }
    return second;
}

第一篇博客就写完了!