Java 需要帮助了解运行时错误的原因以及如何修复它吗
代码的目的是求二项式系数(n,k) 我收到一个运行时错误Java 需要帮助了解运行时错误的原因以及如何修复它吗,java,runtime,runtime-error,Java,Runtime,Runtime Error,代码的目的是求二项式系数(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)+combinRe
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) {
从不输入,导致出现堆栈溢出错误,因为您正在重复调用combinRec(n-1,k),这不会改变
k
。所以,如果n
和k!=0
,那么k==0 | | n==k
将永远不会为真。但是,如果k
,它最终将是真的,因为反复从n
中减去1
,最终会使n
和k
相等。你把它颠倒过来:k
应该更小/相等,否则你会有一系列的调用
if (k == 0 || n == k) {
从不输入,导致出现堆栈溢出错误,因为您正在重复调用combinRec(n-1,k),这不会改变
k
。所以,如果n
和k!=0
,那么k==0 | | n==k
将永远不会为真。但是,如果k
,它最终将是真的,因为反复从n
中减去1
,最终会使n
和k
相等。“我收到一个运行时错误”=>什么错误?您是否可以发布堆栈跟踪,其中包含有用的信息,例如发生错误的行。包含“学习Java语言”部分。“我收到一个运行时错误”=>什么错误?您是否可以发布堆栈跟踪,其中包含有用的信息,例如发生错误的行。包含一个“学习Java语言”部分。@arshajii谢谢你,虽然问题中特别提到“确保n小于k”,但这很奇怪@user2283672很高兴我能提供帮助。别忘了。@arshajii谢谢你,虽然在问题中特别提到“确保n小于k”,但这很奇怪@user2283672很高兴我能帮上忙。别忘了。