class RPairs { private static int recursivePairFinder( int numElements, int numStates, int myElementID, int[] elementList, int pairs ) { int myPairs = pairs; if( myElementID < numElements ) { for( int i = 0; i < numStates; i++ ) { elementList[myElementID] = i; myPairs = recursivePairFinder( numElements, numStates, myElementID + 1, elementList, myPairs ); } } else { boolean pFound = false; for( int p = 0; p < numElements; p++ ) { for( int s = p+1; s < numElements; s++ ) { if( elementList[p] == elementList[s] ) { myPairs++; pFound = true; break; } } if( pFound ) { break; } } } return myPairs; } public static void main( String[] argv ) { int entities = Integer.valueOf( argv[0] ).intValue(); int states = Integer.valueOf( argv[1] ).intValue(); int nums = recursivePairFinder( entities, states, 0, new int[entities], 0 ); System.out.println( new String( "Result: " + nums ) ); } }