使用递归方法识别素数[java]

使用递归方法识别素数[java],java,recursion,Java,Recursion,问题就在下面。main()通过调用isPrime()检查数字1-10。我想我的数学是对的,但是除了2以外的每一个数字都不是素数 我已经检查了一些解决方案和问题,但是,我似乎无法获得相同的结果 原始问题: public class PrimeChecker { // Returns 0 if value is not prime, 1 if value is prime public static int isPrime(int testVal, int divVal) { //

问题就在下面。main()通过调用isPrime()检查数字1-10。我想我的数学是对的,但是除了2以外的每一个数字都不是素数

我已经检查了一些解决方案和问题,但是,我似乎无法获得相同的结果

原始问题:

public class PrimeChecker {
// Returns 0 if value is not prime, 1 if value is prime
   public static int isPrime(int testVal, int divVal) {
      // Base case 1: 0 and 1 are not prime, testVal is not prime

      // Base case 2: testVal only divisible by 1, testVal is prime

      // Recursive Case
         // Check if testVal can be evenly divided by divVal
         // Hint: use the % operator

         // If not, recursive call to isPrime with testVal and (divVal - 1)
      return 0;
   }

   public static void main(String[] args) {
      int primeCheckVal = 0; // Value checked for prime

      // Check primes for values 1 to 10
      for (primeCheckVal = 1; primeCheckVal <= 10; ++primeCheckVal) {
         if (isPrime(primeCheckVal, (primeCheckVal - 1)) == 1) {
            System.out.println(primeCheckVal + " is prime.");
         }
         else {
            System.out.println(primeCheckVal + " is not prime.");
         }
      }
   }
}
公共类PrimeChecker{
//如果值不是素数,则返回0;如果值是素数,则返回1
公共静态int-isPrime(int-testVal,int-divVal){
//基本情况1:0和1不是素数,testVal不是素数
//基本情况2:testVal只能被1整除,testVal是素数
//递归案例
//检查testVal是否可以被divVal平均分割
//提示:使用%运算符
//如果不是,则使用testVal和(divVal-1)递归调用isPrime
返回0;
}
公共静态void main(字符串[]args){
int primeCheckVal=0;//为prime检查的值
//检查素数的值1到10

对于(primeCheckVal=1;primeCheckVal更改if/else块

     if((testVal % divVal != 0) && (testVal / divVal == 1)) {
        isPrime(testVal, (divVal-1));
     }
     else {            
         resultVal = 1;

  }


基本上,您忘记了返回递归的结果,因此代码继续返回错误的内容。如果
testVal%divVal==0
,则该数字是非素数,因此您返回零。此外,不要使用只取零或一的整数;使用@IvanPronin的
布尔值

副本,而不是真的;OP只是aski让我们找到他们的输入错误。所以,不仅仅是输入错误?:)好的,谢谢,这就成功了。所以基本上我需要返回对该方法的调用,直到它除以1。谢谢。@CGSteve78如果这个答案对您有帮助,请单击旁边的绿色勾号接受它。谢谢!
     if((testVal % divVal != 0) && (testVal / divVal == 1)) {
        isPrime(testVal, (divVal-1));
     }
     else {            
         resultVal = 1;

  }
if (testVal % divVal != 0) {
  return isPrime(testVal, (divVal-1));
} else {            
  resultVal = 0;
}