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

TI-BASIC实现插入排序偶发INVALID DIMENSION维度错误求解

问题根因

偶发报错来自TI-BASIC逻辑与(and)运算无短路求值特性,是你对不同语言逻辑运算规则的差异判断遗漏导致的问题:

  • 你写的循环条件While J>0 and L₁(J)>K在常见高级语言中会优先判断J>0,如果该条件不成立就直接终止判断,不会执行后半段的L₁(J)>K,但TI-BASIC的逻辑运算会无条件计算and两侧的所有表达式,再汇总判断逻辑结果
  • 当插入的元素比当前已排序区间所有元素都小的时候,J会递减到0,此时TI-BASIC仍然会尝试访问L₁(0),但TI系列计算器的列表索引从1开始,不存在下标为0的元素,就会触发INVALID DIMENSION报错
  • 报错偶发的原因也在这里:只有当插入元素是当前已排序区间最小值时才会触发该场景,其他时候J不会减到0,代码就能正常运行

修复方案

把单层while循环的判断逻辑拆分,避免J=0时访问列表元素即可:

0→dim(L₁  // clear the list L1
randIntNoRep(1,5,5)→L₁
For(I,2,5)
L₁(I)→K
I-1→J
While J>0
If L₁(J)≤K
Then
Break  // 找到插入位置直接退出循环
End
L₁(J)→L₁(J+1)
J-1→J
End  // end while
K→L₁(J+1)
End  // end for
Disp L₁

调整后列表值判断仅在确认J>0时执行,完全规避下标越界问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 10:06:00