【发布时间】:2019-09-29 06:04:56
【问题描述】:
零是偶数。
一个是奇怪的。
对于任何其他数 N,其均匀度与 N - 2 相同。
定义一个递归函数isEven对应这个描述。该函数应该接受一个参数(一个正整数)并返回一个布尔值。
这是我的 isEven 实现:
let isEven = function(n){
even = 0;
odd = 1;
if(n == even){
return true;
}
else if (n == odd) {
return false;
}
else{
n -= 2;
console.log(n); //Used to see value of n through each call
isEven(n);
}
};
当我调用这个函数时,它返回undefined
document.write(isEven(50)); //prints `undefined`
console.log(n) 的输出如下:
Failed to load resource: net::ERR_FILE_NOT_FOUND
48
46
...
0
我不知道为什么Failed to load resource: net::ERR_FILE_NOT_FOUND 是第一个输出,但之后n 是0,那么为什么是
if(n == even){
return true;
}?
没有执行?
【问题讨论】:
-
您的变量
odd和even是全局变量。您使用 uneccesary 突变,而您可以调用isEven(n - 2)并丢弃递归结果,当函数中未返回值时留下结果undefined。为什么你使用return true而不仅仅是true?
标签: javascript recursion