First, you've come to the right place for answers!
Next, you may have misinterpreted the instructions?
This is not a guessing game. I don't think you want to GUESS what the square root of a number is. Your code is supposed to figure it out exactly.
How would you figure out the square root of 25? (Your example?)
Process of elimination?
Maybe start by multiplying 1 by 1. Does this equal 25?
No?
What about 2 x 2? Is this 25?
What about 3 x 3?
At some point you'll find a number that is the square root of 25, exactly. When you find it, you should return this number. But take a close look at your function's declaration. It does not return an integer!
But what if you hit a number when multiplied by itself is GREATER than the number you need a square root of?
What is the square root of 30?
5 x 5 is 25, so this is less than 30.
But 6 x 6 is greater than 30.
So it seems there is no integer when multiplied by itself equals 30.
THIS is when you would throw a rootCause.noRoot.
Late edit. Removed my comment regarding naming Enums. It was late when I wrote my response. Anyway, that's my excuse and I'm sticking with it. Sorry for confusion.