public static long[][] findTwoGroupsRecursive(long[] values, long middle, int levels) {
    if (levels > 0) {
      long[][] result = twoMeans(values, middle);
      long newMiddle = average(result[1]) - average(result[0]);
      return findTwoGroupsRecursive(values, newMiddle, levels - 1);
    }
    return twoMeans(values, middle);
  }
The percentile method returns the least value from the given list which has at least given percentile.
@param values The list of values to find the percentile from
@param percentile The percentile
@return The least value from the list with at least the given percentile
app/com/linkedin/drelephant/math/Statistics.java