没有循环可以做到这一点吗?

时间:2011-08-13 02:20:53

标签: c# function loops

我很难想出一个不涉及循环的问题的解决方案。基本上,如果某些东西大于某个任意数字,它就会循环。我们说64就是数字。

0 => 0
32 => 32
64 => 64
96 => 32
128 => 64
160 => 32
192 => 64

等等。

我目前正在做的方式涉及一个while循环,它检查该值是否超过64,如果是,则从中减去64。还有另一种不涉及循环的方法吗?

我正在使用C#WinForms。

4 个答案:

答案 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!