小编Vij*_*ava的帖子

当我使用computeIfAbsent计算斐波纳契数时,hashmap size()返回不正确的值

我有以下代码:

import java.math.BigInteger;
import java.util.HashMap;
import java.util.Map;

public class DynamicFib
{
    private static Map<Integer, BigInteger> myMap = new HashMap<>();

    static {
        myMap.put(0, BigInteger.ZERO); //fibonacci(0)
        myMap.put(1, BigInteger.ONE); //fibonacci(1)
    }

    public static BigInteger fibonacci(int x)
    {
//        System.out.println("x = [" + x + "]");
        return myMap.computeIfAbsent(x, n -> fibonacci(n - 2).add(fibonacci(n - 1)));
    }

    public static void main(String[] args)
    {

        System.out.println("l = " + fibonacci(25));
        System.out.println("myMap = " + myMap);
        System.out.println("myMap = " + myMap.keySet().size());

    }

}
Run Code Online (Sandbox Code Playgroud)

控制台输出:

l = 75025

myMap …
Run Code Online (Sandbox Code Playgroud)

java hashmap fibonacci

6
推荐指数
1
解决办法
140
查看次数

标签 统计

fibonacci ×1

hashmap ×1

java ×1