/**
* 斐波那契数列是
* f(0)=0 n=0
* f(1)=1 n=1
* f(n-1)+f(n-2) n>1
*
* 如果采用递归求数列,有很多数字需要重复计算多次,采用分治法可以避免重复计算,
* 使计算的时间复杂段由指数级变为线性的O(n)
*
*/
public int fibonacci(int n){
int rs = 1;
int f1=1;
int f2=1;
if(n<2){
return 1;
}
//通过保存中间结果的方法可以避免多次的重复计算
for(int i=2;i<n;i++){
rs = f1+f2;
f1=f2;
f2=rs;
}
return rs;
}
}