微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用缓存的Java二项式递归

如何解决使用缓存的Java二项式递归

我遇到了一个小问题,必须使用1d Integer数组作为缓存来解决二项式系数。到目前为止,这是我的代码

static public int computeCached(int n,int k) throws ArithmeticException,IllegalArgumentException {
        if(n < 0 || k < 0 || n < k)
            throw new IllegalArgumentException("Illegal");

        int cache[] = new int[n + 1];
        return computeCached(n,k,cache);
    }

    
    static int computeCached(int n,int k,int []cache) throws ArithmeticException {
        if(k == 0 || n == k)
            return 1;
        if(cache[n] != 0)
            return cache[n];
        cache[n] = Math.addExact(computeCached(n-1,cache),computeCached(n-1,k-1,cache));
        return cache[n];
    }

应该存储计算出的值,然后在顶部为下一次迭代添加一个值。 不知何故,它不能在缓存中保存正确的值,我似乎找不到问题。 谢谢:)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。