Can someone explain to me how this program works? : <p>I am having trouble understanding how to program below works and I would appreciate someone explaining to me how exactly it runs. </p>

<pre><code>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); 
    } 
</code></pre>

<p>This part below is specifically what I am having trouble understanding.  Please do not hesitate to explain in detail, I want to understand it fully. Thank you for your time.</p>

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