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

递归函数removeMin返回值不符预期:期望4实际返回1求助

问题排查与修复

问题根源

你的递归调用存在返回值丢失的问题:当进入else分支调用removeMin(tempArr, count)时,你没有接收并返回这个递归调用的结果,而是继续执行后续的return count。这意味着只有最底层递归(tempArr.length == 0时)返回了正确的4,但上层的所有递归调用都会忽略这个结果,直接返回自己当前的count值(第一次调用时count是1,所以最终返回1)。

修复方案

只需要在else分支中返回递归调用的结果,而不是仅仅调用它。修改后的代码如下:

public int removeMin(Integer[] arr, int count) {
    Integer[] tempArr = new Integer[arr.length - 1];
    
    int index = 0;
    for (int i = 1; i < arr.length; i++) {
        tempArr[index] = arr[i] - arr[0];
        index++;
    }
    count = count + 1;
    if (tempArr.length == 0) {
        return count;
    } else {
        // 关键修改:返回递归调用的结果
        return removeMin(tempArr, count);
    }
}

验证逻辑

当输入arr = {2,5,8,11}、count = 0时:

  1. 第一次调用:arr.length=4,tempArr.length=3,count变为1,递归调用removeMin(tempArr, 1)
  2. 第二次调用:arr.length=3,tempArr.length=2,count变为2,递归调用removeMin(tempArr, 2)
  3. 第三次调用:arr.length=2,tempArr.length=1,count变为3,递归调用removeMin(tempArr, 3)
  4. 第四次调用:arr.length=1,tempArr.length=0,count变为4,触发return count,返回4
  5. 上层递归依次接收这个返回值并传递回去,最终整个函数返回4,符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 16:46:07