我很难想出一个不涉及循环的问题的解决方案。基本上,如果某些东西大于某个任意数字,它就会循环。我们说64就是数字。
0 => 0
32 => 32
64 => 64
96 => 32
128 => 64
160 => 32
192 => 64
等等。
我目前正在做的方式涉及一个while循环,它检查该值是否超过64,如果是,则从中减去64。还有另一种不涉及循环的方法吗?
我正在使用C#WinForms。
答案 0 :(得分:6)
将值修改为64,这是一个O(1)操作。像这样:
int number;
// number is initialized
number %= 64;
答案 1 :(得分:5)
public static int filterNumber(int x, int arbitraryNumber) {
if (x < arbitraryNumber) {
return x;
}
int result = x % arbitraryNumber;
if (result == 0) {
return arbitraryNumber;
}
return result;
}
答案 2 :(得分:1)
单独模数对于64可被整除的情况无济于事。
if (number == 0)
return 0;
var mod = number % 64;
return (mod == 0) ? 64 : mod;
答案 3 :(得分:-1)
return n == 0 ? 0 :
n % 64 == 0 ? 64 :
n % 32 == 0 ? 32 :
-1; // you have not specified this case in your examples!