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

如何解决HackerRank superDigit挑战中JS代码返回undefined的问题

问题根因

你代码返回undefined的原因是递归分支没有显式返回结果:
JavaScript函数运行时如果没有执行到对应的return语句,默认返回值为undefined。你在else分支中只执行了递归调用superDigit(nMult.toString(),1),但没有将这个调用的计算结果返回给上层调用者,当代码触发递归逻辑时,外层函数最终没有返回值,就得到了undefined。

修复代码

仅需要在else分支的递归调用前添加return关键字即可:

function superDigit(n, k) {
    // Write your code here

    var nArr = [];
    
    for(let i = 0; i < n.length; i++)
    {
        nArr.push(n[i]);
    }
    
    console.log('nArr: ' + nArr);
    
    var nComb = 0;
    for(let i = 0; i < nArr.length; i++)
    {
        nComb += parseInt(nArr[i]);
    }
    console.log('nComb: ' + nComb);
    
    var nMult = nComb *= k;
    console.log('nMult: ' + nMult);
    console.log('');
    
    if(nMult < 10)
    {
        return nMult;
    }
    else
    {
        return superDigit(nMult.toString(),1);
    }
}

验证说明

以官方示例输入n = '9875', k = 4为例,计算逻辑为:

  1. 拆分n求和:9+8+7+5 = 29
  2. 乘以k得29*4=116
  3. 递归计算116的超级位:1+1+6=8
    修复后的代码会正确返回8,不会出现undefined问题。

内容的提问来源于stack exchange,提问作者Theunis Lombard

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 22:06:04