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

Java递归查找数组元素最后索引 疑惑代码是否返回首个索引求推演

问题解答

疑问判定

如果你的递归逻辑确实是从数组末尾向前遍历,找到目标值就直接返回当前索引,那么不会返回元素第一次出现的索引,得到的就是最后一次出现的索引。只有从数组头部向后遍历、找到即返回的递归逻辑才会返回第一次出现的索引。

Dry Run 示例

我们用测试用例数组 = [2,5,3,5,1],查找目标值=5来演示从后向前遍历的递归执行过程:

  • 初始调用:查找索引为4,对应元素是1,与目标值5不匹配,递归调用索引3
  • 递归调用1:查找索引为3,对应元素是5,与目标值匹配,直接返回3
  • 最终返回结果3,就是目标值最后一次出现的索引,符合预期

纯递归实现方案

public class LastIndexFinder {
    // 对外暴露的入口方法
    public static int findLastIndex(int[] inputArray, int target) {
        // 空数组边界处理
        if (inputArray == null || inputArray.length == 0) {
            return -1;
        }
        // 从数组最后一位开始递归查找
        return recursiveFind(inputArray, target, inputArray.length - 1);
    }

    // 递归核心逻辑
    private static int recursiveFind(int[] inputArray, int target, int currentPos) {
        // 遍历完全部元素未找到,返回-1
        if (currentPos < 0) {
            return -1;
        }
        // 当前位置匹配目标,直接返回当前索引
        if (inputArray[currentPos] == target) {
            return currentPos;
        }
        // 不匹配则向前递归查找
        return recursiveFind(inputArray, target, currentPos - 1);
    }

    // 测试用例
    public static void main(String[] args) {
        int[] testArr = {2,5,3,5,1};
        System.out.println(findLastIndex(testArr, 5)); // 输出3
        System.out.println(findLastIndex(testArr, 9)); // 输出-1
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 21:15:02