2 回答
TA贡献1752条经验 获得超4个赞
但是不要错过学习相互递归的机会!
const isEven = (n = 0) =>
n === 0
? true
: isOdd (n - 1)
const isOdd = (n = 0) =>
n === 0
? false
: isEven (n - 1)
console .log
( isEven (0) // true
, isEven (1) // false
, isEven (2) // true
, isEven (3) // false
, isEven (99) // false
)
console .log
( isOdd (0) // false
, isOdd (1) // true
, isOdd (2) // false
, isOdd (3) // true
, isOdd (99) // true
)
TA贡献1818条经验 获得超11个赞
您需要从递归调用中返回结果。
let isEven = function(n){
const // declare local variables/constants
even = 0,
odd = 1;
if(n == even){
return true;
}
else if (n == odd) {
return false;
}
else{
//n -= 2; no need to reassign a value for a single use
return isEven(n - 2); // return here
}
};
console.log(isEven(50));
console.log(isEven(21));
没有else
零件的更好的样式,因为如果以前返回,则不需要这样做。
直接使用值,如果仅使用一次,
使用严格的比较(Identity / strict相等运算符
===
),因为不严格会导致错误的假设直接对参数进行计算,而无需将值重新分配给不再使用的变量
let isEven = function(n){
if (n === 0) return true;
if (n === 1) return false;
return isEven(n - 2);
};
console.log(isEven(50));
console.log(isEven(21));
添加回答
举报