【发布时间】:2014-12-28 23:56:34
【问题描述】:
为什么这只能在 n=90 左右有效? 试图计算第 94 个斐波那契数会给出不正确的结果。 如果我使用 Integer 类而不是 Long,也会发生同样的情况。
import java.util.HashMap;
public class FDP {
private static HashMap<Long, Long> fib = new HashMap<Long, Long>();
private static Long calculateFib(Long n) {
if(fib.get(n)==null){
Long temp = calculateFib(n-1) + calculateFib(n-2);
fib.put(n, temp);
return temp;
}
else{
return fib.get(n);
}
}
}
public static void main(String[] args) {
fib.put(0L, 0L);
fib.put(1L, 1L);
System.out.println(calculateFib(90L)); //success
System.out.println(calculateFib(94L)); //garbage??
}
}
这里是斐波那契数列:
http://www.maths.surrey.ac.uk/hosted-sites/R.Knott/Fibonacci/fibtable.html
【问题讨论】:
标签: recursion dynamic-programming fibonacci