ConcurrentHashMap 和斐波那契数列 - 结果不一致
2022-09-03 04:28:11
我写了一个程序,用于递归计算斐波那契数列,使用一个和方法:ConcurrentHashMap
computeIfAbsent()
当我使用小值时,程序工作绝对正常,但是当从程序增加的值从未停止时,程序会陷入无限循环8,9,10
10 to 20
public class Test {
static Map<Integer, Integer> concurrentMap = new ConcurrentHashMap<>();
public static void main(String[] args) {
System.out.println("Fibonacci result for 20 is" + fibonacci(20));
}
static int fibonacci(int i) {
if (i == 0)
return i;
if (i == 1)
return 1;
return concurrentMap.computeIfAbsent(i, (key) -> {
System.out.println("Value is " + key);
return fibonacci(i - 2) + fibonacci(i - 1);
});
}
}
有人能告诉我为什么它永远被困住了吗?