一尘不染

给定正数的所有数字的总和[关闭]

algorithm

这个问题不太可能对将来的访客有所帮助;它仅与较小的地理区域,特定的时间段或格外狭窄的情况(通常不适用于Internet的全球受众)有关。要获得使该问题更广泛适用的帮助请访问帮助中心

7年前关闭。

方法返回应该像输入数字一样,假设为345,则输出应为3 + 4 + 5 = 12- > 1 + 2 =3。我在这里做错了什么?

public class DigitSum
 {
    int  Sum=0;

    public int compute( int MethParam )
    {
        int rem = MethParam%10; 
        Sum+=rem;

        MethParam = MethParam/10; 
        if(MethParam>10)
            compute(MethParam);

        return Sum+MethParam;  
    }

  public static void main(String[] args)
  {
    DigitSum ds  = new DigitSum();
    System.out.println(ds.compute(435));
  }
}

阅读 219

收藏
2020-07-28

共1个答案

一尘不染

O(1)表示数字总和的算法:

取任何数字的模9,将返回该数字的总和,直到获得单个数字为止。

如果数字是9的倍数,则总和将为9

一线

public int sumDigit(int n){
    return (n%9 == 0 && n != 0) ? 9 : n%9;
}

替代实现:

public int sumDigit(int n){

      int sum = n % 9;
      if(sum == 0){
          if(n > 0)
               return 9;
      }
      return sum;
}
2020-07-28