public int sumOfDigits(int num){
return num == 0 ? 0 : num % 10 + sumOfDigits(num/10);
}
答案 0 :(得分:3)
这是数字总和的递归计算 - 只要你没有消耗掉所有数字,它就会将最后一个数字加上所有数字的总和。
答案 1 :(得分:1)
sumOfDigits是一个接受int参数的方法,返回类型也是int。
如果传递0,那么它将返回0,否则它将返回num % 10 + sumOfDigits(num/10)
如果传递的数字不是0,只要输入的数字变为0
,这将继续答案 2 :(得分:1)
return num == 0 ? 0 : num % 10 + sumOfDigits(num/10);
相当于:
if(num==0)
{
return 0;
}
else
{
return num % 10 + sumOfDigits(num/10); // this is recursive call. It gets called until num is reduce to 0
}
这主要表现如下:
如果num=768
结果= 7+6+8
。
答案 3 :(得分:1)
这是Java三元运算符。它类似于其他语言的三元运算符。在这种情况下:
return <boolean expression> ? <if true> : <if false>;
您已发布递归算法来计算整数中的数字总和。
下面列出了两种等效方法:
public int sumOfDigitsIf(int num) {
if (num == 0) {
return 0;
} else {
return num % 10 + sumOfDigitsIf(num / 10);
}
}
public int sumOfDigitsLoop(int num) { // useful to examine if you aren't used to recursive algorithms
int value = 0;
while (num > 0) {
value += num % 10;
num /= 10;
}
return value;
}
答案 4 :(得分:0)
此函数递归计算数字的位数之和。首先,如果数字为0,则返回0,因为0的数字之和为0.然后,它计算1s位数为num%10的数字,并将其加到剩余数字的总和中places,num / 10是剩余的位置,它在该数字上调用sumOfDigits()。
答案 5 :(得分:0)
此方法计算表示基数为10的整数的数字之和。使用%运算符递归调用该方法以分隔数字中的数字,然后添加它们以形成结果。
例如 - 234进2 + 3 + 4 = 9
但是,如果在基数10以外的基数中传递一个整数,该方法仍会给出基数为10的结果
例如sumOfDigits(0b1011010)
- &gt;基数10的答案是90表示90
sumOfDigits(0x532)
- &gt;基数10的答案是1330的7,
以下是二进制和八进制值的变化,以获得代表数字的总和
return num == 0 ? 0 : num % 2 + sumOfDigits(num / 2);
return num == 0 ? 0 : num % 8 + sumOfDigits(num / 8);
答案 6 :(得分:0)
这是一个Java三元运算符,但在大多数情况下它没有被使用,因为if-else语句更具可读性,这也可以执行三元运算符可以执行的相同功能。但是如果你想制作更短的代码行,那么这是首选。