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

Java递归填充数组出现StackOverflowError,求解决方法

解决递归填充数组时的StackOverflowError问题

你的代码触发栈溢出的核心原因是递归调用时错误使用了后自增/后自减运算符:

  • idx++ 和 x-- 是后序运算符,会先将当前值传递给递归函数,再执行自增/自减操作
  • 这导致每次递归调用传入的idx和x都和上一次完全相同,递归终止条件idx>x永远无法满足,最终引发无限递归,耗尽栈内存

修复方案

直接传递更新后的参数值,确保每次递归都能向终止条件靠近:

public int[] genArr(int[] nums, int idx, int x) {
    // 终止条件:当索引超过目标位置时返回数组
    if (idx > x) {
        return nums;
    }
    // 填充当前索引的元素
    nums[idx] = idx;
    // 传递更新后的索引和目标值,替代后自增/自减
    return genArr(nums, idx + 1, x - 1);
}

调用示例

确保初始化的数组大小能覆盖需要填充的范围,比如要填充0到5的元素,数组大小应为6:

int[] arr = new int[6];
genArr(arr, 0, 5);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 11:45:58