We can avoid expensive branches (gasp) by using some bitwise arithmetic to achieve the so-called “absolute value”, an advanced hacker technique I learnt at Blizzard. Also unlike c, c# is not enlightened enough to understand that my code is perfect so it complains about “not all code paths returning a value”.
private bool IsEven(int number)
{
number *= 1 - 2*(int)(((uint)number & 2147483648) >> 31);
if (number > 1) return IsEven(number - 2);
if (number == 0) return true;
if (number == 1) return false;
throw new Exception();
}
Why return book? Does that have some Blizzard reference?
And why would number == 2 ⇒ return false? This is a function for getting true when the number is even, right?
After working at blizzard for 51 years, I finally found an elegant solution by using the power of recursion
Now see, you need the other method. IsNegativeEven()
We can avoid expensive branches (gasp) by using some bitwise arithmetic to achieve the so-called “absolute value”, an advanced hacker technique I learnt at Blizzard. Also unlike c, c# is not enlightened enough to understand that my code is perfect so it complains about “not all code paths returning a value”.
Nice, now we just need another function to find odd numbers, cause not all numbers are even you know.
I removed the tail recursion for you:
I didn’t get this.
Why return
book
? Does that have some Blizzard reference?And why would
number == 2
⇒return false
? This is a function for gettingtrue
when the number is even, right?Haha, you’re right. I’ve now learned two things:
At the end of the day i just wanted the function to be worse, by causing stack overflows
What’d be the result for
IsEven(1)
?Stack overflow