使用您的代码,您应该以 n-1 的值开始 i,因为 n % n 始终适用于素数。
那么在你的条件下(if (i == 1) { ... },应该返回 true,因为如果方法到达1,那么它满足所有其他条件。
最后在你的return语句return isPrimeRecursive(n, i++);中,最好使用++i,因为i++会在函数执行后增加i的值。
public static boolean isPrimeRecursive (int n,int i){
if (n <= 1) {
return false;
}
if (i == 1) {
return true;
}
if(n % i == 0){
return false;
}
return isPrimeRecursive(n, --i);
}
在您的主要功能中,您将使用:
int n = 17;
System.out.println(isPrimeRecursive(n, n-1);
另一种方法是始终以 2 的值开始 i 并增加它的值。从那里开始。
public static boolean isPrimeRecursive (int n, int i) {
if (n <= 2) {
return (n == 2) ? true : false;
}
if (i >= n) {
return true;
}
if (n % i == 0) {
return false;
}
return isPrimeRecursive(n, ++i);
}
那你就简单做吧:
int n = 17;
System.out.println(isPrimeRecursive(n, 2);