我正在通过Eloquent JavaScript学习JavaScript,练习之一是编写一个递归函数isEven
,如果数字为偶数,则返回true;如果数字为奇数,则返回false。
如果我理解正确,那么作者特别希望执行以下操作:
如果数字== 0,则为偶数。
如果数字== 1,则为奇数。
“对于任何数字N,其均匀度都与N-2相同”。
但是,当我使用下面的代码时,出现错误:InternalError: too much recursion (line 3 in function isEven) …
如何在仍使用递归函数的同时解决此问题?
// Your code here.
function isEven(n){
if(n==0){
return true;
}
else if(n==1){
return false;
}
else{
n = n-2;
isEven(n);
}
}
console.log(isEven(50));
// → true
console.log(isEven(75));
// → false
console.log(isEven(-1));
// → ??
最佳答案
您可以在减少/增加值之前添加另一张支票。
function isEven(n) {
if (n == 0) {
return true;
}
if (n == 1) {
return false;
}
if (n > 0) {
n = n - 2;
} else {
n = n + 2;
}
return isEven(n);
}
console.log(isEven(50));
console.log(isEven(75));
console.log(isEven(-1));