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

为何for循环无法终止?附checkSE函数代码片段

你的for循环无法终止的原因分析

嘿,我瞅了你的代码片段,立马就找到问题所在啦——你嵌套的那个内层for循环漏掉了迭代语句,这直接导致它无限循环停不下来!

先看你这段有问题的代码:

for (--i, --j; board[i][j].type == opponent;...)

C语言里for循环的结构是 for(初始化; 循环条件; 迭代操作),你这里第三个部分(分号后面的迭代操作)只写了...,相当于啥都没做。这意味着每次循环跑完,i和j的值都不会变,只要board[i][j].type == opponent这个条件一直成立,循环就会一直转下去,根本停不下来。

修复方案

你需要在迭代部分加上让i和j递减的操作(毕竟你是往西南方向回溯检查棋子对吧?),同时最好加上边界判断避免数组越界,修改后的循环应该是这样:

// 往西南方向回溯,同时确保索引不越界
for (--i, --j; i >= 0 && j >= 0 && board[i][j].type == opponent; --i, --j) {
    // 这里可以添加你的业务逻辑,比如标记需要翻转的棋子等
}

这样每次循环都会让i和j各减1,逐步往回检查,要么遇到不是对手棋子的情况,要么触达数组边界,循环都会正常终止。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:40:01