Псевдокод увеличения уже полностью упрощен, однако вы можете упростить логику уменьшения одним из двух способов:
v = v ? v - 1 : x - 1
или
v = (v + x - 1) % x
Первыйдопустимо, потому что вы знаете, что декремент никогда не нужно будет модулировать, чтобы он находился в диапазоне [0, x)
, но последний подход предпочтителен, потому что он избегает ненужной логики ветвления.
Имейте в виду, хотя, как преимуществоВ случае, если x
превышает половину Number.MAX_SAFE_INTEGER
(2 ** 53 - 1), первый подход является единственным, который будет работать, как ожидалось.