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

if语句内return未返回预期值:递归计算器函数返回undefined问题

递归调用未返回结果导致返回undefined的问题

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

看calculate函数里的这行代码:

calculate(input.toSpliced(operation.ind - 1, 3, operationOutcome));

你在这里发起了递归调用,但没有把递归的返回值传递回去。虽然最后一层递归(当operation为null时)确实返回了input[0],但上层的递归调用只是执行了这个函数,没有把结果return出去,所以每一层上层函数都会默认返回undefined,最终最外层的console.log拿到的就是undefined。

只需要给这行递归调用加上return即可:

return calculate(input.toSpliced(operation.ind - 1, 3, operationOutcome));

修改后的完整calculate函数:

const calculate = (input) => {
    const operation = findNextOperation(input);
    if (operation === null) {
        console.log('here', input[0]) // Logs "here -2" to the console
        return input[0];
    }

    const operationOutcome = performOperation(input[operation.ind - 1], input[operation.ind + 1], operation.operation);
    return calculate(input.toSpliced(operation.ind - 1, 3, operationOutcome));
}

这样递归的结果会逐层传递回最外层,console.log就能打印出正确的计算结果了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 23:42:49