Hackerrank's Sherlock and Array
Your first example looks much nicer, so I'll focus on that.

First, let's remove the tail recursion in the most obvious way possible:

public static boolean isEven(int[] arr, int index, int leftSum, int rightSum) {
    while (true) {
        int i = index-1;
        int j = index+1;

        while(i &gt; -1) {
            leftSum += arr[i--];
        }

        while(j &lt; arr.length) {
            rightSum += arr[j++];
        }

        if (leftSum == rightSum) {
            return true;
        }
        if (index == arr.length-1) {
            return false
        }

        index += 1;
        leftSum = 0;
        rightSum = 0;
    }
}


Now let's clean it up:

public static boolean isEven(int[] arr) {
    for (int index = 0; index &lt; arr.length; index++) {
        int leftSum = 0;
        for (int i = index -  1; i &gt; -1; i--) {
            leftSum += arr[i];
        }

        int rightSum = 0;
        for (int i = index+1; i &lt; arr.length; i++) {
            rightSum += arr[i];
        }

        if (leftSum == rightSum) {
            return true;
        }
    }

    return false;
}


We can combine the sum variables:

public static boolean isEven(int[] arr) {
    for (int index = 0; index &lt; arr.length; index++) {
        int difference = 0;

        for (int i = index -  1; i &gt; -1; i--) {
            difference += arr[i];
        }
        for (int i = index+1; i &lt; arr.length; i++) {
            difference -= arr[i];
        }

        if (difference == 0) {
            return true;
        }
    }

    return false;
}


Now consider that we don't need to recalculate difference each time. If one iteration we have

|-A-| * |--B--|
1 2 3 4 5 6 7 8


The next we have

|-A-|++ --|-B--|
1 2 3 4 5 6 7 8


Namely, we add 4 to A and subtract 5 from B, which means we add 4 and 5 to the difference. We should also check for empty arrays.

public static boolean isEven(int[] arr) {
    if (arr.length == 0) {
        // Alternatively, return false since there
        // is no element that satisfies the condition.
        throw new IllegalArgumentException();
    }

    int difference = arr[0] - Arrays.stream(arr).sum();
    if (difference == 0) {
        return true;
    }

    for (int i = 1; i &lt; arr.length; i++) {
        difference += arr[i-1];
        difference += arr[i];

        if (difference == 0) {
            return true;
        }
    }

    return false;
}