从数学的角度来看,斐波那契数列的求解比较简单,(类似于1,1,2,3,5....),但是从算法和计算的时间复杂度上看不同的算法效率相差很大的,比如说其中的迭代和递归两种不同的求解算法。
下面以一段代码为例解释让我们看看差距有多大。简单的通过时间来观察。细微的差距可以自己体会。
package lab1;
import java.util.Date;
import java.util.Scanner;
public class Fbnq {
//迭代方法对斐波那契数列求解
public static int fbnq_dd(int n){
int a[]=new int[n+1];
a[0]=0;a[1]=1;int result=0;
if(n==1) return 1;
for(int i=2;i<n+1;i++){
a[i]=a[i-1]+a[i-2];
result=a[n];
}
return result;
}
public static int dd_int_compare(){
int m=1;int n=1;int q=2;//0,1,1,2,3,5,8
int count=3;
while(n<q){
m=n;
n=q;
q=m+n;
count++;
}
return count;
}
public static int dd_long_compare(){
long m=1;long n=1;long q=2;//0,1,1,2,3,5,8
int count=3;
while(n<q){
m=n;
n=q;
q=m+n;
count++;
}
return count;