You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript递归实现isEven奇偶判断时除0和1外返回undefined如何解决

问题原因

你的递归判断逻辑本身没有问题,报错核心原因是else分支没有返回递归调用的执行结果。

在JavaScript中,函数如果没有显式书写return语句指定返回值,执行完成后会默认返回undefined。你当前的代码仅在N等于0或1的场景下有明确的返回值,当N大于1时,你只是触发了isEven(N-2)的递归调用,但是没有把这个调用的结果返回给上层调用方,所以最终拿到的结果就是undefined。

修正后的代码
function isEven(N){
    if(N===0){
        return true;
    }else if(N===1){
        return false;
    }else {
        // 新增return,将递归结果向上传递
        return isEven(N-2);
    }       
}

console.log(isEven(1)); // 输出 false
console.log(isEven(0)); // 输出 true
console.log(isEven(10)); // 输出 true
可选优化(兼容负数输入)

如果需要支持负整数的偶数判断,可以先对参数取绝对值再执行递归,避免负参数导致栈溢出:

function isEven(N){
    const num = Math.abs(N);
    if(num === 0) return true;
    if(num === 1) return false;
    return isEven(num - 2);
}

内容的提问来源于stack exchange,提问作者Smail Nekab

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 07:57:04