2015-11-03 67 views
0

我试图让我的Mod结果打印出来,但它做了一些奇怪的事情?有谁知道它为什么以倒计时的方式打印?任何人都可以告诉我为什么我的println声明是这样做的

这是我的驱动程序类:

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 

回答

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

因此,将每次计算mod直到y为0,在这种情况下,递归停止。

相关问题