Solving getMax - the wrong way

I was intrigued by the following question -

Find the maximum of two numbers without using any if-else statements, branching, or direct comparisons.

Understanding the problem

The problem seems straight forward - do not use code that would compare the numbers directly, and no code that makes choices

Brain Storming

I came up with a few options and did rightly suspect that the solution existed in 

  • A mathematical equation, or
  • An equation that involved the shift operator
I was not familiar with the mathematical formula, nor was I familiar with using the shift operator.

I decided to solve this with the last option I came up with -

The "wrong" way ?

The solution I chose involved - 
  • Decreasing both numbers until one reached zero. 
  • Keep track of how many times we decreased the number in a count variable
  • When one value reached zero we could add all 3 values, to arrive at the max value

This of course is highly inefficient and would only work with positive numbers

The following website has a really good explanation on how to solve this problem mathematically -

https://www.geeksforgeeks.org/compute-the-minimum-or-maximum-max-of-two-integers-without-branching/