Java 使用BigInteger和Memonization调用递归方法时获取NULL

Java 使用BigInteger和Memonization调用递归方法时获取NULL,java,recursion,biginteger,memoization,Java,Recursion,Biginteger,Memoization,我使用长数据类型使该方法工作,但是当我调用我的BigInteger递归方法时,当我打印它时,它会显示“null”。 下面是我的长递归方法: public static long fib_rec(int n){ long result=1; if(n<=2){ return result; } else{ if(fval[n]!=0){ result=fval[n]; }

我使用长数据类型使该方法工作,但是当我调用我的BigInteger递归方法时,当我打印它时,它会显示“null”。 下面是我的长递归方法:

public static long fib_rec(int n){
    long result=1;
    if(n<=2){
        return result;
    }
    else{
        if(fval[n]!=0){
            result=fval[n];
        }
        else{
            result = fib_rec(n-1) + fib_rec(n-2);
            fval[n] = result;
        }
        return result;
    }
}
公共静态长fib_rec(int n){
长期结果=1;

如果(n假设BigInteger数组开始时像长数组一样充满了零,但它开始时却充满了null,因为它是一个对象数组,因此:

if(fval[index] != BigInteger.ZERO){
    result=fval[index];
}
将始终返回null,因为
null
值不等于
biginger.ZERO

如果您添加以下内容:

for (int i = 0; i < index+1; i++) {
  fval[i] = BigInteger.ZERO;
}
for(int i=0;i
在您调用
fib\u rec
之前,它会工作

for (int i = 0; i < index+1; i++) {
  fval[i] = BigInteger.ZERO;
}