2015-11-03 68 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,在這種情況下,遞歸停止。

相關問題