原始的实现,有重复计算
public static long F(int N){
if(N == 0) return 0;
if(N == 1) return 1;
return F(N-1) + F(N-2)
}
更好的实现,用数组保存已经计算过的值
public static long fib(int n){
long value[] = new long[n+1];
value[1] = 1;
long result = fibonacci(n, value);
return result;
}
public static long fibonacci(int n, long[] value){
if (n==0) return 0;
if (n==1) return 1;
if(value[n]>1) return value[n];
return value[n] = fibonacci(n-1, value) + fibonacci(n-2, value);
}