定义
F(0)=1,F(1)=1, F(n)=F(n-1)+F(n-2)(n>=2,n∈N*)
递归实现
递归实现 算法简单明了 但效率较低
public static void main(String[] args) {
int n = 10;
int result = f(n);
System.out.println(n + "-->" + result);
}
private static int f(int n) {
if (n <= 1) {
return 1;
} return f(n - 1) + f(n - 2);
}
优化版
在原有算法的基础上保留计算结果, 本算法可以继续优化 只保留最后两次的计算结果
private final static Map<Integer, Integer> resultMap = new HashMap<>();
static {
resultMap.put(0, 1);
resultMap.put(1, 1);
}
public static void main(String[] args) {
int n = 10;
System.out.println(n + "-->" + f(n));
}
private static int f(int n) {
if(n<0){
return 0;
}
if(!resultMap.containsKey(n)){
resultMap.put(n, f(n-1)+f(n-2));
}
return resultMap.get(n);
}