我是一名业余程序员,目前正在尝试学习递归。我一直试图找到一个解释
之类陈述的网站public static init sumDigits(int i) {
return i == 0 ? 0 : i % 10 + sumDigits(i / 10);
}
并解释每个单独的部分的功能,例如分号或问号。救命。
答案 0 :(得分:0)
? :
是三元运算符。简单来说,您可以说它是 if 的声明。
现在,如果?
之前的条件为true,则操作为在?
和:
之间编写的语句。
如果?
之前的条件为假,则该操作为在:
之后编写的语句。
在您的情况下,您提到的是,如果i==0
然后返回0
,否则返回i % 10 + sumDigits(i / 10)
;
答案 1 :(得分:0)
现在让我讲述一下这段代码:
要计算i的位数,请先检查i是否等于0。如果是, 则结果为0。否则结果为i的最后一位加 i / 10的数字总和(四舍五入)。
i == 0
是“首先检查我是否等于0” : 0
是“如果是,那么结果是0” ?
是“否则” i % 10
是“ i的最后一位i / 10
是“ i / 10(四舍五入)” i % 10 + sumDigits(i / 10)
是“ i的最后一位加上i / 10的总和(四舍五入)” 答案 2 :(得分:0)
public static init sumDigits(int i) {
return i == 0 ? 0 : i % 10 + sumDigits(i / 10);
}
说明:首先,更正写为init
而不是int
的方法的返回类型。
实际上return语句说,
如果i
的值为0
,则return 0
否则为return i % 10 + sumDigits(i / 10)
这里的?
确定条件(i==0)
是对还是假。如果条件满足(即为true),则简单地返回0,否则使用i
它可能是这样写的:
public static int sumDigits(int i) {
if(i==0)
return 0;
else
return i % 10 + sumDigits(i / 10);
} // that will result the same as above but with less amount of code.