数字生根函数

时间:2017-02-21 20:55:30

标签: c# digital

我有一个简单的数字生根功能,我想要求不同的解决方案。这是我的第一个想法。你能帮我找到更快的功能吗?

        private static int digitalRooting(int inputNumber)
        {
            int plurality = 0,
                digit = 0,
                temp = 0;

            while (true)
            {
                digit = inputNumber % 10;

                temp = inputNumber / 10;

                plurality = plurality + digit;

                if (temp < 10)
                {
                    plurality = plurality + temp;
                    break;
                }

                inputNumber = temp;
            }

            return plurality;
        }

1 个答案:

答案 0 :(得分:0)

我建议将while转换为for循环。一位数输入的实现速度更快(当value处于[0..9]范围时,我们根本不计算余数%。但是,主要优点是代码是 terser ,而且可读

如果您只想要当前例程的数字总和,例如12345 -> 1 + 2 + 3 + 4 + 5 == 15

private static int digitalRooting(int value) {
  int result = 0;

  for (; value > 9; value /= 10)
    result += value % 10;

  return result + value;
}

如果您想要实际的digital root,例如12345 -> 1 + 2 + 3 + 4 + 5 = 15 = 1 + 5 = 6

private static int digitalRooting(int value) {
  do {
    int result = 0;

    for (; value > 9; value /= 10)
      result += value % 10;

    value = result + value;
  }
  while (value > 9);

  return value;
}