2015-11-03 3 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) -> мод = г = 7% 8 = 7
  2. gcdRecurse (8,7) -> мод = г = 8% 7 = 1
  3. gcdRecurse (7,1) -> по модулю = г = 7% 1 = 0

Следовательно, мода будет рассчитываться каждый раз, пока y не будет 0, и в этом случае рекурсия остановится.

Смежные вопросы