算法小节(一)——斐波那契数列(java实现)

时间:2023-03-09 07:33:47
算法小节(一)——斐波那契数列(java实现)

看到公司的笔试题中有一道题让写斐波那契数列,自己忙里偷闲写了一下

什么是斐波那契数列:斐波那契数列指的是这样一个数列 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368这个数列从第二项开始,每一项都等于前两项之和。

特别指出:第0项是0,第1项是第一个1。
注:此时a1=1,a2=1,an=a(n-1)+a(n-2)(n>=3,n∈N*)
代码:
/**
 * Created by zhangjianchao
 */
public class TestAlgorithm {
    public static void main(String[] args){
        Fibonacii fibonacii = new Fibonacii();
        System.out.println("final次="+fibonacii.fibonacii(9));
    }

}

class Fibonacii{
    public long fibonacii(long n){
        int fn1 = 1; //第n-1项
        int fn2 = 1; //第n-2项
        int fn = 0;  //第n项
        if(n<=2){ //数列的前两项都为1
            return 1;
        }
        //计算第n项,同时将前n-2项及n-1项重新计算
        for(int i = 0;i < n-2;i++){
            fn = fn1 + fn2;
            fn2 = fn1;
            fn1 = fn;
            System.out.println("第" + i + "次 fn(" + fn + ") = fn1(" + fn1 + ") + fn2(" + fn2 + ")");
        }
        return fn;
    }
}