import java.util.HashMap;
import java.util.Map;
public class TestFac {
public static Map<Long, Long> map = new HashMap<Long, Long>();
public static long Fac(long num) {
long value = 0;
if(map.containsKey(num)){
return (Long) map.get(num);
}else{
if (num == 1 || num == 2) {
value= 1;
} else {
value= Fac(num - 1) + Fac(num - 2);
}
map.put(num, value);
}
return value;
}
public static long Fac2(long num) {
long one = 1;
long two = 1;
long point = 0;
if (num == 1 || num == 2) {
return 1;
}
for (long i = 3; i <= num; i++) {
point = one + two;
one = two;
two = point;
}
return point;
}
public static void main(String[] args) {
System.out.println(Fac(45));
}
}
[/code]