我知道这个方法检查整数是否是偶数,但究竟是怎么回事?我在像 fibonacci 或 factorial 这样的例子中理解递归是如何工作的,但在此基础上却没有。我认为由于语法原因,我无法得到它。
// Assume n >= 0
public static boolean even(int n) {
return (n<=1) ? (n==0) : !even(n-1);
}
我的问题是:它是一个布尔方法,为什么没有&#34; true&#34;或&#34;假&#34;? 它究竟是如何检查它是否均匀?如果我在没有递归的if语句中这样做,我会检查它:
if((n%2) == 0)
return true;
答案 0 :(得分:1)
JAVA short if else else :
condition ? trueCase: elseCase;
它等于以下语法:
if(condition){
trueCase;
}
else{
elseCase;
}
在您的代码中:
return (n<=1) ? (n==0) : !even(n-1);
等于:
if(n<=1)){
if(n==0){
return true;
}
else{
return false;
}
}
else{
if(even(n-1)){
return false;
}
else{
return true;
}
}
答案 1 :(得分:0)
陈述
if((n%2) == 0)
return true;
else
return false;
相当于
return (n%2) == 0;
可以使用任何求值为布尔值的表达式,而不是直接使用两个布尔值中的一个。
对于名为“even”的函数,它基本上表示一个整数即使前一个整数不是偶数,除非它小于1,在这种情况下它甚至是零。由于它的计算结果为布尔值,因此您可以将其作为返回值返回。
您应该注意,您的功能不适用于负值。