// ArrayReverseRecursionDemo1.java
public class ArrayReverseRecursionDemo1
{
public static void arrayReverse(short[] array,
int beginIndex,
int length)
{
System.out.println("arrayReverse begin: beginIndex=" + beginIndex
+ ", length=" + length
+ ", array=" + arrayText(array));
if ( length > 1 ) {
// Swap elements at ends of subarray:
short temp = array[beginIndex];
array[beginIndex] = array[beginIndex+length-1];
array[beginIndex+length-1] = temp;
// Reverse the elements between the ends;
arrayReverse(array, beginIndex + 1, length - 2);
} // if
else if ( length < 0 || length >= array.length - beginIndex )
throw new IndexOutOfBoundsException(
"length=" + length + " should be in range [0, "
+ (array.length - beginIndex - 1)
+ "].");
// Does nothing if length == 0 or length == 1.
System.out.println("arrayReverse end: beginIndex=" + beginIndex
+ ", length=" + length
+ ", array=" + arrayText(array));
} // method arrayReverse
public static void main(String[] args)
{
short[] array = new short[] { 45, -5, 2, 7, -31};
int beginIndex = 0;
int length = array.length;
System.out.println("main begin: beginIndex=" + beginIndex
+ ", length=" + length
+ ", array=" + arrayText(array));
arrayReverse(array, beginIndex, length);
System.out.println("main end: beginIndex=" + beginIndex
+ ", length=" + length
+ ", array=" + arrayText(array));
} // method main
private static String arrayText(short[] array)
{
String text = "{";
if ( array.length > 0 )
text = text + array[0];
for ( int i = 1; i < array.length; i++ )
text = text + ", " + array[i];
text = text + "}";
return text;
}
} // class ArrayReverseRecursionDemo1