由于BF除了磁带,指针和非常基本的循环功能外并没有提供其他任何功能(通常,您需要确保指针与开始时位于同一位置,这称为平衡循环。在极少数情况下,您可以在没有平衡的情况下执行循环(例如数组),很难在其中实现递归算法。您可以尝试在bf中模拟“正常”计算机(这完全取决于您对磁带的处理方式)。我相信C2BF项目是以这种方式工作的(它将C编译为可操之过气)。如果我没记错的话,它们将成组的单元以交替的堆栈/堆对的方式处理(使某些指针操作有所不同,因为所有操作都必须乘以2)
因此,毕竟本文是我的结论:尽管确实很困难,但仍可以在Brainfuck中实现递归算法。我敦促您记住,每个递归算法都可以迭代完成。您只需要维护自己的堆栈即可。如果要递归实现,实际上这就是最终要执行的操作。但是,如果您认为它是迭代的并维护自己的堆栈,而不是递归的,那么它将帮助您了解您的实际工作,并最终导致设计更好的算法。
| 归档时间: |
|
| 查看次数: |
1469 次 |
| 最近记录: |