algorithm - 有没有办法只使用数学操作数(例如 mod)来实现这个非常简单的 bool 逻辑?

标签 algorithm language-agnostic math

我想将一个值减一,如果它达到零,则将其设置为最大值。有没有一种方法可以通过数学来做到这一点,而无需求助于 if (n-1 == 0) { n = max; }

使用 n = (n + 1) % (max + 1); 可以很容易地实现将值增加 1,然后在它大于 max 时将其设置为零的相反情况; .此外,这甚至更好,因为您可以增加任何数量(不仅仅是一个)并且它仍然会正确地“包装”。

感谢您到目前为止的回答。明确地说,我的意思是根本没有任何 bool 逻辑 (if/else) 或 bool 运算符(!、&& 等)。我只是很好奇如何做到这一点。只要提供评论,下面的正确答案真的会让它更难读吗?对于减去任意数字并期望正确环绕的更一般情况,有必要使用它。

最佳答案

n = max - ((max - n +1)%max)

关于algorithm - 有没有办法只使用数学操作数(例如 mod)来实现这个非常简单的 bool 逻辑?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2282297/

相关文章:

algorithm - 所有打开的灯泡都 Shiny 的时刻数

language-agnostic - 将RGB uint拆分为单独的R G B组件

language-agnostic - 非虚拟和抽象方法的命名约定

algorithm - 生成 1,000,000 个随机排列的样本

string - perl中的后缀数组?

用于 minimax 的 Python n 叉树

math - 将 Sympy 表达式简化为变量的隐式函数

matlab - 找到复杂函数具有实值的点

javascript - 使用 javascript/jquery 删除特定的 html 代码

performance - 亚线性时间内的第 n 个斐波那契数