Math “的公式;溢出减法;
假设我正在递增或递减一个索引,我将使用它在数组中移动 数组从索引0开始,在索引4结束。如果我在索引0处,并且想要向后移动1个索引,那么我应该在索引4处结束(环绕) 这可能是非常简单的,但出于某种原因,我无法想出一个公式来给出这个结果。“环绕加法”非常简单:索引%5+1,但我就是搞不懂减法。公式Math “的公式;溢出减法;,math,computer-science,Math,Computer Science,假设我正在递增或递减一个索引,我将使用它在数组中移动 数组从索引0开始,在索引4结束。如果我在索引0处,并且想要向后移动1个索引,那么我应该在索引4处结束(环绕) 这可能是非常简单的,但出于某种原因,我无法想出一个公式来给出这个结果。“环绕加法”非常简单:索引%5+1,但我就是搞不懂减法。公式 newindex = (index + increment + arraylen) % arraylen 用于增量+1和-1(向前和向后移动) arraylen=5在您的示例中,正确的加法公式是(索引+
newindex = (index + increment + arraylen) % arraylen
用于增量+1
和-1
(向前和向后移动)
arraylen=5
在您的示例中,正确的加法公式是(索引+1)%5
。当索引
为4时,您的版本给出了错误的结果
正确的减法公式取决于所用语言中%
运算符的行为:
- 在Python中,
是正确的,因为(索引-1)%5
即使左侧为负数,也保证结果介于0和4之间(包括0和4)%
- 在C和Java中,
是正确的,因为当左侧为负数时,(索引+4)%5
将返回负数余数。请注意,此公式也适用于Python%