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

JS递归判断数字是否为2的幂返回undefined问题求助

递归判断2的幂函数返回undefined的问题修复

你的代码核心问题在于内部递归函数check的else分支中,调用check(i+1)时没有返回这个递归调用的结果。这会导致当递归进入这个分支时,当前的check函数执行完毕后没有返回值,最终整个递归链传递回来的就是undefined——哪怕深层递归已经正确返回了true或false。

修复后的代码如下:

function check2Pow(num)
{
    function check(i)
    {
        let pow=Math.pow(2,i);
        if(pow === num)
        {
            return true;
        }
        else if(pow > num)
        {
            return false;
        }
        else
        {
            // 关键:返回递归调用的结果,让结果逐层向上传递
            return check(i+1);
        }
    }
    return check(0);
}

修改后,每次递归调用的结果都会被返回给上一层调用者,最终check(0)能拿到最底层递归返回的true或false,从而让check2Pow返回正确结果。

内容的提问来源于stack exchange,提问作者Pranay kumar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 07:54:50