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

为何计算数字根的函数返回undefined?变量已存正确结果

问题分析与解决

你的问题出在递归调用时没有返回结果。

看代码里的这个分支:

if (s >= 10) {
    nuberRoot(s)
}

当s >=10时,你确实递归调用了nuberRoot(s)去计算新的数字根,但没有把这个递归调用的返回值传递出去。当前函数执行完这个分支后,没有任何return语句,所以会默认返回undefined,这就是外层调用得到undefined的原因。

修正方法很简单,在递归调用前加上return,把递归的结果返回:

function nuberRoot(a: number): number {
    let s: number = 0;
    while (a > 0) {
        s += a % 10
        a = Math.floor(a / 10)
    }
    if (s >= 10) {
        return nuberRoot(s) // 这里加上return
    } else {
        alert(s)
        return s
    }
}

alert(nuberRoot(942)) // 现在会正确返回6

这样,当递归计算出最终的数字根后,会一层层把结果返回给上层调用,最终外层就能得到正确的结果了。

内容的提问来源于stack exchange,提问作者Андрей Воробьёв

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 22:25:25