代码如下:
// 递归法
static int getFib1(int n){
if (n < 0)
return -1;
if (n == 0)
return 0;
if (n==1 || n==2)
return 1;
return getFib1(n-1) + getFib1(n-2);
}
// 基于变量实现
static int getFib2(int n){
if (n < 0)
return -1;
if (n == 0)
return 0;
if (n==1 || n==2)
return 1;
int a=1, b=1, c=0;
for (int i=3; i <= n; i++){
c = a + b;
a = b;
b = c;
}
return c;
}
// 基于数组实现
static int getFib3(int n){
if (n < 0)
return -1;
if (n == 0)
return 0;
if (n==1 || n==2)
return 1;
int[] fibs = new int[n+1];
fibs[0] = 0;
fibs[1] = fibs[2] = 1;
for(int i = 3; i<=n; i++){
fibs[i] = fibs[i-1] + fibs[i-2];
}
return fibs[n];
}