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

JavaScript版Brainfuck解释器嵌套循环无限循环问题排查

问题排查:Brainfuck解释器嵌套循环无限循环问题

核心错误点

你的解释器处理]指令时的循环变量更新逻辑存在问题:当遇到]且当前内存单元值不为0时,你把i设为栈中保存的[的索引,但for循环会自动执行i++,导致实际跳转到[的下一个位置,直接跳过了[的条件判断,彻底打乱了循环的退出逻辑,最终引发无限循环。

修复方案

修改]指令的处理代码,将i设置为栈顶值后手动减1,抵消for循环自动的i++,确保下一次循环能准确回到[的位置执行判断:

case ']':
    if (this.memory[this.pointer] !== 0) {
        // 手动减1,抵消for循环的i++,保证回到[的位置
        i = this.loopStack[this.loopStack.length - 1] - 1;
    } else {
        this.loopStack.pop();
    }
    break;

额外小问题修复

Compile函数里存在变量引用错误,你用了this.output,但这里的this指向Compile函数本身,应该使用局部变量output:

document.getElementById('output_field').innerText = output;

修复后验证

修复完成后,运行你提供的嵌套循环Brainfuck代码:

+[-[<<[+[--->]-[<<<]]]>>>->]>-.-.---.>..>.<<<<<-.<.+.>>>>>>.>.<.<-.

将正确输出hello world,与在线编译器结果一致。

内容的提问来源于stack exchange,提问作者Laczkó Lajos

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 21:13:24