该代码的目的是找到二项式系数(n,k)
我收到运行时错误

import java.util.*;

public class pract5ex11 {
public static long combinRec (int n, int k){
    long answer;
    if (k==0 || n==k) {
            answer = 1;
        }
    else {

        answer = combinRec(n-1,k)+combinRec(n-1,k-1);

    }
    return answer;
}

public static void main (String []args){
    Scanner s = new Scanner(System.in);
    System.out.println("Enter first number");
    int n = s.nextInt();
    System.out.println("Enter second number, must be equal or greater");
    int k = s.nextInt();
    System.out.println(combinRec(n,k));

}
}


我在某些方面也感到困惑:
Java中的静态和非静态含义
指挥中心线
Java中的关键字“ this”
如果有某些网站或参考资料可以帮助他们理解这些观点,我将不胜感激,
谢谢

最佳答案

您已将其颠倒了:k应该较小/相等,否则您将有一系列的呼叫

if (k == 0 || n == k) {


绝不会输入StackOverflowError,因为您反复调用combinRec(n - 1, k),并且不会更改k。因此,如果n < kk != 0,则k == 0 || n == k永远不会为真。但是,如果使用k < n,则最终将是正确的,因为从1反复减去n最终将使nk相等。

09-11 18:53