我正在寻找实现以下目标的简化方法:
在任一方向上遍历范围
0 to x
,其中x是任意正数。
以下是我到目前为止使用modulus
的内容,但我想知道是否有办法进一步简化它?
上调:
v = (v + 1) % total
减少:
v = v ? (v - 1) % x : x - 1
答案 0 :(得分:1)
增加伪代码已经完全简化,但是,您可以通过以下两种方式之一简化减少的逻辑:
v = v ? v - 1 : x - 1
或
v = (v + x - 1) % x
前者是有效的,因为你知道减量永远不需要被调制到[0, x)
范围内,但后一种方法是首选的,因为它避免了不必要的分支逻辑。
请记住,作为边缘情况,如果x
超过Number.MAX_SAFE_INTEGER
(2 ** 53 - 1)的一半,则第一种方法是唯一可以按预期工作的方法