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

列表越界访问的结果及帕斯卡三角代码嵌套循环逻辑疑问

问题解答

1. 访问列表不存在的索引会发生什么

在Java中,调用List.get(int index)方法时,如果传入的索引小于0或者大于等于列表的size(),会直接抛出IndexOutOfBoundsException运行时异常,程序会终止执行(除非提前捕获该异常)。

2. 帕斯卡三角代码的嵌套循环疑问解析

先看你提供的Java代码:

List<List<Integer>> triangle = new ArrayList<List<Integer>>();

//first row is always 1 and only 1
triangle.add(new ArrayList<>());
triangle.get(0).add(1);

//loop through the numbers of rows and add them previous rows
for(int rowNums = 1; rowNums < numRows; rowNums++){
    //creating new row
    List<Integer> row = new ArrayList<>();

    //previous row, used to add
    List<Integer> prevRow = triangle.get(rowNums - 1);

    //first element in the pascal triangle is 1
    row.add(1);

    for(int i = 1; i < rowNums; i++){
        row.add(prevRow.get(i - 1) + prevRow.get(i));

    }
    //last element in a pascal triangle is always 1
    row.add(1);

    //add the row to the triangle list
    triangle.add(row);
}

return triangle;

当生成第1行(对应代码中rowNums=1)时,内层循环的条件是i < rowNums,也就是i < 1。而内层循环的起始值是i=1,这个条件不成立,所以内层循环根本不会执行,自然不会去访问prevRow.get(1)(第0行只有索引0的元素)。

此时代码只会执行:

  • 给当前行添加第一个元素1
  • 给当前行添加最后一个元素1
    最终第1行就是[1,1],完全不会触发索引越界异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 20:22:43