使用缓存的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 (将#修改为@)