Компилятор не пытается определить, что он охватывает все возможные значения n
.Все, что он видит, это то, что у вас есть три if
утверждения, и предполагается, что all из них может быть ложным ... в этом случае вы достигнете конца метода, не возвращаяvalue.
См. в этом блоге Эрика Липперта для получения дополнительной информации об ограничениях компилятора, когда речь заходит о достижимости.
Просто сделайте окончательный возврат безусловным.