【发布时间】:2014-11-18 22:41:07
【问题描述】:
我正在尝试编写一个采用非负参数并返回其数字平方和的方法的递归实现。例如,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 新手)。
谢谢!
【问题讨论】:
-
n/10将自动截断为整数,因为n和10都是ints。所以你的那部分代码已经是正确的。如果你想要一个非整数(对于其他程序),你需要写n/10.0或n/10d或(double)n/10。