Понимание рекурсии в Java

Мне трудно понять следующий код, основанный на алгоритме рекурсии в Java. Я не понимаю, какова другая ценностьx а такжеy есть когда они звонят друг в друга? Я пытался получить правильное значение, позвонивSystem.out.print() в коде, но все равно не получить помощь.

public class RecursionExample
{

    private static int[][] arr={
        {3},
        {7, 4},
        {2, 4, 6},
        {8 ,5, 9, 3}
    };

    public static int maxSum(int[][] graph, int x, int y, int sum) {
        if (x == 3) 
        {
            return sum+graph[x][y];
        }
        int max= Math.max(maxSum(graph, x+1, y, sum), maxSum(graph, x+1, y+1, sum));

        sum += graph[x][y];
        return sum+max;
    }

    public static void main(String[] ar)
    {
        System.out.println(maxSum(arr,0,0,0));
    }
}

Я не мастер в программировании, и я пытаюсь изучать Java на практике. Любая помощь приветствуется.

Ответы на вопрос(4)

Ваш ответ на вопрос