递归

递归

pubdate:2019-07-04 16:16:35
tags:习题,JavaScript
题目:
我们已经看到,%(取余运算符)可以用于判断一个数是否是偶数,通过使用 % 2 来检查它是否被 2 整除。这里有另一种方法来判断一个数字是偶数还是奇数:
0 是偶数
1 是奇数
对于其他任何数字 N,其奇偶性与 N–2 相同。​定义对应此描述的递归函数 isEven。 该函数应该接受一个参数(一个正整数)并返回一个布尔值。​使用 50 与 75 测试该函数。想想如果参数为 –1 会发生什么以及产生相应结果的原因。请你想一个方法来修正该问题。
解:
javascript
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)); /** 负数会导致超出最大调用堆栈 */ // → ??