我正在使用 Eloquent JavaScript 来学习 JavaScript。我是初学者,我想了解这个练习是如何工作的,它是关于递归并与余数运算符相关的。我不明白这种比较,我真的很想知道它是如何工作的。
function isEven(n) {
if (n == 0) return true;
else if (n == 1) return false;
else if (n < 0) return isEven(-n);
else return isEven(n - 2);
}
console.log(isEven(50)) //true;
console.log(isEven(75)) //false;
console.log(isEven(-1)) //false;
我尝试在日志中测试-2,它打印为true,为什么这样做?
我不太完全理解递归或 JavaScript,如果这个例子像我 5 岁一样向我解释,我希望它。
标记不同的决策:
function isEven (n) {
if (n == 0) return true; // 1
else if (n == 1) return false; // 2
else if (n < 0) return isEven(-n); // 3
else return isEven(n - 2); // 4
}
当您调用isEven(-2)
时,它会根据// 3
调用isEven(2)
,然后根据// 4
调用isEven(0)
,然后根据// 1
返回true