首页 - 崮生写笔记的地方

递归

题目:

我们已经看到,%(取余运算符)可以用于判断一个数是否是偶数,通过使用% 2来检查它是否被 2 整除。这里有另一种方法来判断一个数字是偶数还是奇数:

  • 0是偶数
  • 1是奇数
  • 对于其他任何数字N,其奇偶性与N–2相同。 定义对应此描述的递归函数isEven。 该函数应该接受一个参数(一个正整数)并返回一个布尔值。 使用 50 与 75 测试该函数。想想如果参数为 –1 会发生什么以及产生相应结果的原因。请你想一个方法来修正该问题。

解:

function isEven(number){
    if(number===0)
        return true
    else if(number===1)
        return false
    return isEven(number + (number > 0 ? -2 : 2))
}

console.log(isEven(50));
// → true
console.log(isEven(75));
// → false
console.log(isEven(-1)); /** 负数会导致超出最大调用堆栈 */
// → ??
代码库-git