该解决方案是无分支的,但是执行
%两次:
function wrapIndex(i, i_max) { return ((i % i_max) + i_max) % i_max;}应该说
%是假设了C#/ Java的行为,即结果与 _被除数_具有相同的符号。一些语言将余数计算定义为取 _除数_的符号(例如,
mod在Clojure中)。某些语言有两种变体(Common Lisp,Haskell等中的
mod/
rempair)。Algol-68
%x始终返回非负数。C 直到C 11才实施。
也可以看看
- Wikipedia / Modulo操作



