Как уже упоминалось, сложность пространства / времени одинакова для обоих случаев.Важным фактором здесь является сложность понимания кода.Это сводится к индивидуальному суждению в конкретных случаях.
Я не уверен, какой из них предпочитаю, потому что я не понимаю алгоритм странности, и мое предпочтение зависит от того, насколько «очевидна» любая формулировка дляинформированный читатель - я предполагаю, что любой, кто прикасается к этому коду, знает, что значит быть странным для N.
Но во втором случае я бы предпочел меньше сравнений.Если одно предложение обрабатывает N <= 5, то следующей альтернативе не нужно обеспечивать N> = 6.
Таким образом (в псевдокоде)
else if (N <= 1) {
// no decision according to original code
} else if (N <= 5) {
print not weird
} else if (N <= 20) {
print weird
} else {
print not weird
}
Это тот случай, когда N либостранный или не странный?Затем, во-первых, требуется else
, чтобы избежать повторения вычислений, и, во-вторых, вы хотели исключить рассмотрение нулевых и отрицательных целых чисел?(Я спрашиваю об этом с точки зрения того, что мой предложенный макет проясняет, что мы ничего не делаем для таких случаев, и я спорю для ясности изложения - предполагаемый читатель, возможно, должен задаться вопросом об этом очевидном упущении)
Кроме того, в то время как я придираюсь к нитам
(!(N % 2 == 0))
становится более понятным, если записать его как
(N % 2 != 0)