簡體   English   中英

Java中整數的平方和

[英]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.powint因為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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM