有人可以向我解释这个程序是如何运作的吗?

时间:2017-04-12 03:48:53

标签: java greatest-common-divisor

我无法理解如何编程以下作品,我希望有人向我解释它是如何运行的。

public static void main(String[] args) {
    //Enter two number whose GCD needs to be calculated. 
    Scanner scanner = new Scanner(System.in);

    // Title of what program will do
    System.out.println("GCD Finder");
    System.out.println("");

    // Here user is instructed to enter the numbers
    System.out.println("Please enter first number: "); 
    int number1 = scanner.nextInt(); 
    System.out.println("Please enter second number: "); 
    int number2 = scanner.nextInt(); 

    // The numbers are then calculated using findGCD.
    System.out.println("GCD of two numbers " + number1 +" and " + number2 +" is : " + findGCD(number1,number2)); 
    } 


private static int findGCD(int number1, int number2) { 
    //base case 
    if(number2 == 0){ 
        return number1; 
        } 
    // Returns the two numbers 
    return findGCD(number2, number1%number2); 
    } 

下面这部分是我理解的问题。请不要犹豫,详细解释,我想完全理解。谢谢你的时间。

private static int findGCD(int number1, int number2) { 
    //base case 
    if(number2 == 0){ 
        return number1; 
        } 
    // Returns the two numbers 
    return findGCD(number2, number1%number2); 
    } 

1 个答案:

答案 0 :(得分:1)

所以你特别挣扎的那部分:

onStart()

这是一个递归函数,我想象是什么导致你的困难。为了更好地理解递归函数,或许请阅读:http://www.python-course.eu/recursive_functions.php不要担心它以python为例。

在这种情况下,特别是当数字2为0时,函数将返回数字1。如果数字2不为零,则它将再次调用该函数,其中number2是number1 / number2的余数,否则称为模数%{{ 3}}

您可以在while循环中编写该函数:

onCreate()

希望有所帮助吗? 或者至少不会让任何事情变得更加混乱。