该代码的目的是找到二项式系数(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 < k
和k != 0
,则k == 0 || n == k
永远不会为真。但是,如果使用k < n
,则最终将是正确的,因为从1
反复减去n
最终将使n
和k
相等。