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

如何在Brainfuck中实现保留原数的a+b求和?

如何在Brainfuck中保留原数实现a+b求和

你的代码触发操作次数超限,是因为存在无限循环——比如[<<<+>>>]这类循环体里没有对当前指针指向的单元格执行减1操作(-),只要单元格值不为0,循环就会无限重复,永远无法终止。

要实现初始内存[A,B]变为[A,B,A+B],核心是在不修改原始A、B的前提下,将两者的值分别复制到第三个单元格相加。以下是可行的实现代码:

; 初始状态:[A, B, 0, 0]
<<          ; 指针移至第一个单元格(A的位置)
[-          ; 将A临时转移到第四个单元格,清空第一个单元格
  >>>+      ; 第四个单元格加1
  <<<-      ; 第一个单元格减1
]
>>>         ; 指针移至第四个单元格(临时存储的A)
[-          ; 将A移回第一个单元格,同时复制到第三个单元格
  <<<+      ; 第一个单元格加1(恢复原始A)
  >+        ; 第三个单元格加1(复制A的值)
  -         ; 第四个单元格减1,循环终止条件
]
<<          ; 指针移至第二个单元格(B的位置)
[-          ; 将B临时转移到第四个单元格,清空第二个单元格
  >>+       ; 第四个单元格加1
  <<-       ; 第二个单元格减1
]
>>>         ; 指针移至第四个单元格(临时存储的B)
[-          ; 将B移回第二个单元格,同时复制到第三个单元格
  <<<+      ; 第二个单元格加1(恢复原始B)
  >+        ; 第三个单元格加1(复制B的值)
  -         ; 第四个单元格减1,循环终止条件
]
<<          ; 指针最终停在第三个单元格(A+B的结果位置)

这段代码通过第四个单元格作为临时存储区,分别完成A、B的“备份-恢复-复制”操作,全程保留原始的A和B值,最终第三个单元格的值即为A+B。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 02:50:24