像圆形链接列表一样计数

时间:2012-12-06 15:40:13

标签: algorithm math

我想以限制但以循环方式倒计时。

让我们说限制是12,当前迭代是10然后我想结果为10 - 2 = 8 类似的方法,如果当前迭代为0,我应该得到如下结果0 - 2 = 11而不是-2。

主要认为我希望将其作为算法/公式。

感谢。

1 个答案:

答案 0 :(得分:4)

使用modolus运算符和Zn group

(i < 0 ? n + i : i) % n

其中n是数字 - 示例中为12,i是迭代编号。

(假设为-n <= i,否则您可能需要为某些自然k*n - i减去k以确保结果为正。如果您反复执行上述步骤,则不应该一个问题。)


作为旁注,在Zn组中的纯数学概念-i == n-i中,但我知道的大多数编程语言都没有进行此计算,并且在模态计算之后,左操作数的符号保持不变。
为此,我们首先检查标志,并确保它是正面的。