任何人都可以告诉我为什么我的println声明正在这样做

时间:2015-11-03 05:22:22

标签: for-loop modulus println

我正在尝试将我的Mod结果打印出来,但它做了一些奇怪的事情?有谁知道它为什么以倒计时方式打印?

这是我的驱动程序类:

import java.util.Random;

public class gcdTest {

    public static void main(String args[]){


    Random number = new Random();
    int x = number.nextInt(10);
    int y = number.nextInt(10);

     System.out.println("This is it x "+x+ "and y "+ y);
     gcdR.gcdRecursive(x, y);
     //gcdI.gcdIterative(x, y);
}
}

这是我的方法类

public class gcdR {
    static int gcdRecursive(int x, int y){
         if (y == 0){

             return x;
         }else{
             int z = (x % y);
             System.out.println("The mod"+z);
             return gcdRecursive(y, (z));
         }          
    }

注意: 我得到像这样的打印声明

This is it x 7 and y 8
The mod 7
The mod 1
The mod 0

为什么我的代码不仅仅是打印出来

This is it x 7 and y 8
The mod 7

1 个答案:

答案 0 :(得分:0)

当您递归调用gcdRecursive时,您的参数的顺序为y,然后是z,这意味着在您的示例中,计算结果如下:

  1. gcdRecurse(7,8) - > mod = z = 7%8 = 7
  2. gcdRecurse(8,7) - > mod = z = 8%7 = 1
  3. gcdRecurse(7,1) - > mod = z = 7%1 = 0
  4. 因此,每次计算mod直到y为0,在这种情况下递归停止。