Find the minimum value in a circular list of integers
You can fix the bug, that @Misha pointed out, by changing

    if (input.get(highestIndex) &gt; input.get(lowestIndex)) {
      if (lastCheck) {
        return input.get(lowestIndex);
      }
      return Main.findMinRecursive(input, lowestIndex, highestIndex / 2);
    }


to

    if (input.get(highestIndex) &gt; input.get(lowestIndex)) {
      return input.get(lowestIndex);
    }


because, if the value to the right is greater than the value to the left in the subsection you are searching through, then that subsection is already perfectly sorted in ascending order.

I also think you can achieve a very tiny performance improvement if you don't use so many calls to get(). You can store the values in properties(a.k.a. variables) first, and then use those variables/properties in place of the get(), but it's probably an almost imperceptible performance boost