[英]Sum of squares of digits of an integer in Java
我正在嘗試編寫一個采用非負參數並返回其數字平方和的方法的遞歸實現。 例如,sumSquareDigits(10)應該返回1,sumSquareDigits(103)應該返回10。
這是我的代碼:
public static int sumSquareDigits(int n) {
if (n < 10) return n^2;
return (((n % 10)^2) + sumSquareDigits(n/10));
}
例如,對於給定的整數625,它將類似於:
(625%10)^ 2 +(62,5%10)^ 2 +(6,25)^ 2 = 5 ^ 2 + 2 ^ 2 +(6,25)^ 2
當然這是錯誤的,因為最后一項應該是6,而不是6,25。 我正在尋找一種截斷6,25使其變為6的方法。
我們如何做到這一點? 而且,我希望能有任何提示可以更好地實現此功能(我是Java新手)。
謝謝!
在Java中, ^
不是“按冪”,它是按位XOR運算符。 要在Java中執行功能,請使用Math.pow
。 請記住, Math.pow
返回一個雙Math.pow
因此,如果您只想要一個int
則需要將其Math.pow
轉換為int
。 例如
if (n < 10) return (int)Math.pow(n, 2);
當然,正如msandiford所指出的那樣,如果只需要計算2的冪,那么將一個數字本身相乘可能會更容易。 例如
if (n < 10) return n * n;
^
用於按位XOR運算符。 您可以使用Math.pow
,並將結果Math.pow
為int
因為Math.pow
返回double
:
public static int sumSquareDigits(int n) {
if (n < 10) return (int) Math.pow(n, 2);
return (int)((Math.pow((n % 10), 2)) + sumSquareDigits(n/10));
}
或者,因為它只是平方,所以只需將底數乘以自己即可:
public static int sumSquareDigits(int n) {
if (n < 10) return n * n;
return ((n % 10) * (n % 10)) + sumSquareDigits(n/10);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.