1.定义:
斐波那契数列指的是这样一个数列:1 1 2 3 5 8 13....
2.分析思路
稍加观察,可以看输出这个数列存在一个函数关系:
当n=0时,f(n)=0
当n<=2时,f(n)=1
当n>2时,f(n)=f(n-1)+f(n-2)
方法一:递归
缺点:该递归算法的时间复杂度是O(2^n),所以只能算n比较小时的结果,若n过大,该算法执行时间就很长。
方法二:迭代
public static long Fib2(int n){
if(n==0){
return 0;
}
if(n<=2){
return 1;
}
long n1=1; //n-2项
long n2=1; //n-1项
long sum=0; //求和(可以理解为fn项)
for(int i=2;i<n;i++){
sum=n1+n2;
n1=n2; //原来的n-1项变成新的n-2项
n2=sum; //算出的sum变成新的n-1项
return sum;
}
优点:该算法的时间复杂度是O(n),所以执行效率较高