这个问题不太可能对将来的访客有所帮助;它仅与较小的地理区域,特定的时间段或格外狭窄的情况(通常不适用于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)); } }
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; }