斐波那契数列的高效算法
static int count=0;
public static void main(String[] args) {
System.out.println("不用集合:结果="+fun(21)+"\t执行循环"+count+"次");
count=0;
Map<Integer,Integer> map=new HashMap();
map.put(1,1);
map.put(2,1);
System.out.println("用集合:结果="+fun2(21,map)+"\t执行循环"+count+"次");
}
private static int fun(int n){
count++;
if (n == 1 || n == 2) {
return 1;
}else {
return fun(n-1)+fun(n-2);
}
}
private static int fun2(int n,Map<Integer,Integer> map){
count++;
if (!map.containsKey(n-1)){
map.put(n-1,fun2(n-1,map));
}
if (!map.containsKey(n-2)){
map.put(n-1,fun2(n-1,map));
}
return map.get(n - 2) + map.get(n - 1);
}