Java 为什么在递归方法中会出现stackoverflow错误?

Java 为什么在递归方法中会出现stackoverflow错误?,java,recursion,stack-overflow,Java,Recursion,Stack Overflow,这是我尝试使用的递归方法,但我一直得到一个堆栈溢出方法。。。我说不出它有什么毛病 public class NUMWAYS_JENRODRIGUEZ { public static long numWays (int n, int k, int [] D) { if (n == 0) return 1; if (n < 0) return 0;

这是我尝试使用的递归方法,但我一直得到一个堆栈溢出方法。。。我说不出它有什么毛病

public class NUMWAYS_JENRODRIGUEZ {         
    public static long numWays (int n, int k, int [] D) {          
        if (n == 0)
            return 1; 

        if (n < 0) 
            return 0; 

        if (k <=0 && n >= 1) 
            return 0;

        return numWays( n, k - 1, D ) + 
               numWays( n-D[k-1], k, D );
    }
}
NUMWAYS_JENRODRIGUEZ{
公共静态长numWays(int n,int k,int[]D){
如果(n==0)
返回1;
if(n<0)
返回0;
如果(k=1)
返回0;
返回天数(n,k-1,D)+
天数(n-D[k-1],k,D);
}
}

如果使用
n<1
调用
numWays(n,k-1,D)
,递归将永远不会结束。你需要检查你的递归逻辑。@TimBiegeleisen在这种情况下,递归确实停止了,那是当
k=1
@Jennifer你用什么输入来获得堆栈overfow???
int[]D1={0,1,3,6,7,10,35};int k1=D1.length-1;int n1=150;int[]D2={0,1,2,3,4,5,6,7};int k2=D2。长度-1;System.out.println(“递归,numWays(“+n1+”,“+k1+”,D1)=“+numWays(n1,k1,D1))请编辑您的问题以显示完整的示例,而不是使用注释。此外,如果您能够展示您为理解问题所采取的诊断步骤,这将有所帮助。(例如,这些样本中的哪一个导致了问题?)