看到公司的笔试题中有一道题让写斐波那契数列,自己忙里偷闲写了一下
什么是斐波那契数列:斐波那契数列指的是这样一个数列 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;
}
}