斐波那契数列,n=0开始:0, 1, 1, 2, 3, 5…
暴力方法
public int Fibonacci(int n) {
if(n <= 0)
return 0;
if(n == 1)
return 1;
return Fibonacci(n-1) + Fibonacci(n-2);
}
运行时间:1321ms,占用内存:8804k
自顶向下
public class Solution {
public static int[] result;
public int solve(int n){
if(result[n] >= 0){
return result[n];
}
result[n] = solve(n-1) + solve(n-2);
return result[n];
}
public int Fibonacci(int n) {
if(n <= 0)
return 0;
if(n == 1)
return 1;
result = new int[n+1];
result[0] = 0;
result[1] = 1;
if(n>=2){
for(int i=2; i<result.length; i++)
result[i] = -1;
}
return solve(n);
}
}
运行时间:18ms,占用内存:9268k
自底向上
public int Fibonacci(int n) {
if(n <= 0)
return 0;
if(n == 1)
return 1;
int[] result = new int[n];
result[0] = 1;
result[1] = 1;
for (int i=2; i<result.length; i++){
result[i] = result[i-1] + result[i-2];
}
return result[result.length-1];
}
运行时间:25ms,占用内存:9160k