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

递归实现整数反转:代码未返回预期结果问题排查

问题原因分析

你的递归函数存在核心问题:递归调用时未返回其处理结果。

以输入132、初始rev=0为例,执行流程如下:

  1. 第一次调用:num=132,rev=0 → 计算后num=13,rev=2,调用reverse(13,2)
  2. 第二次调用:num=13,rev=2 → 计算后num=1,rev=23,调用reverse(1,23)
  3. 第三次调用:num=1,rev=23 → 计算后num=0,rev=231,调用reverse(0,231)
  4. 第四次调用:num=0,直接返回rev=231,但这个结果没有被上一层调用接收,导致第三次调用返回的是自身初始的rev=23,以此类推,最终第一次调用返回的是最初传入的0,而非正确的231。
修复方案

只需在递归调用时添加return,将递归处理后的结果传递回来:

function reverse(num, rev) {
    if (num != 0) {
        let mod = num % 10;
        rev = rev * 10 + mod;
        num = Math.floor(num / 10);
        console.log(num, rev);
        return reverse(num, rev); // 新增return传递递归结果
    }
    return rev;
}

调用reverse(132, 0)即可得到正确结果231。

额外优化:给rev设置默认值,避免调用时遗漏参数:

function reverse(num, rev = 0) {
    if (num != 0) {
        let mod = num % 10;
        rev = rev * 10 + mod;
        num = Math.floor(num / 10);
        console.log(num, rev);
        return reverse(num, rev);
    }
    return rev;
}

此时直接调用reverse(132)也能正常返回231。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 14:00:35