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

Java递归方法未完整执行:数组递归反转功能异常排查

问题分析与修复方案

原代码的核心问题

  • 基准条件错误:当q < p时,递归已触达终止边界,数组反转已完成,无需调用swap,原代码的这一步会把交换好的元素再次交换,破坏结果。
  • 递归逻辑缺失:进入递归处理子区间前,未先交换当前起始索引p和结束索引q对应的元素,导致每一层递归都没处理当前交换操作,最终数组完全未被反转。

修正后的代码

public static char[] stringRecursion(char[] a, int p, int q) {
    // 基准条件:起始索引大于等于结束索引时,直接返回数组
    if (p >= q) {
        return a;
    }
    // 先交换当前p和q位置的元素
    swap(a, p, q);
    // 递归处理中间的子数组
    return stringRecursion(a, p + 1, q - 1);
}

public static char[] swap(char[] a, int p, int q) {
    char temp = a[p];
    a[p] = a[q];
    a[q] = temp;
    return a;
}

逻辑说明

  1. 基准条件调整:当p >= q时(包含奇数长度数组的中间元素,无需交换),直接返回数组终止递归。
  2. 递归流程修正:先完成当前p和q位置的元素交换,再递归处理p+1到q-1的子区间,每一层递归都会完成当前边界的交换,最终实现整个数组的反转。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 19:10:24