public int recursiveChop(int target, int[] dataSet) {
		int arrayLength = dataSet.length;

		if(dataSet.length == 0) {
			return -1;
		}

		int arrayMiddle = arrayLength/2;
		int middleValue = dataSet[arrayMiddle];

		if (arrayLength == 1 && middleValue != target) {
			return -1;
		}

		if (middleValue > target) {
			int choppedLength = arrayMiddle;
			int[] choppedArray = copyArray(dataSet, 0, choppedLength);
			return iterativeChop(target, choppedArray);

		} else if (middleValue < target) {
			int choppedLength = arrayLength-arrayMiddle;
			int[] choppedArray = copyArray(dataSet, arrayMiddle, choppedLength);

			int relativePosition = dataSet.length - choppedLength;
			int iterativeChop = iterativeChop(target, choppedArray);

			if (iterativeChop != -1)
				return iterativeChop + relativePosition;
			return iterativeChop;
		}

		return arrayMiddle;
	}