This week's book giveaway is in the Mac OS forum. We're giving away four copies of a choice of "Take Control of Upgrading to Yosemite" or "Take Control of Automating Your Mac" and have Joe Kissell on-line! See this thread for details.
The problem seems to stem from your attempt at removing a member from the array so that you may use it recursively. Unfortunately, this can't be done easily. You have to create a new array (that is smaller), and copy the members to the new array. (You may also use the System.arraycopy() method to do the copy part)
IMO, I think it is better to change the Array() method to also take a range (start and / or end indexes). This will allow the method to work on a subarray. The recursion would be done by simply changing the range -- removing the need to create more arrays.