我写了一个程序来存储斐波那契数列,并将检索第n个斐波那契数。它一直运行良好,直到第50个斐波那契数,返回一个负数。
getFibonacci(47) 返回1836311903,但是
getFibonacci(48) 返回-1323752223。为什么会这样?
public class Fibonacci {
static HashMap<Integer, Integer> map = new HashMap<Integer, Integer>();
public static void main(String[] args) {
int x;
storeFibonacciNumbers(50);
System.out.println(getFibonacci(48));
}
public static void storeFibonacciNumbers (int n){
for (int x=1; x <= n; x++ ){
if(x == 1){
map.put(x, 0);
}
else if (x == 2) {
map.put(x, x-1);
}
else
map.put(x, map.get(x-1) + map.get(x-2));
}
}
public static long getFibonacci (int x){
return map.get(x);
}
}