脑干递归函数的示例

Hyp*_*lls 1 recursion fibonacci brainfuck

直截了当-我一直在学习头脑操,但是我很难绕过递归的想法。我已经为此搜索了Google,并搜索了论坛-如果需要的话,请提前道歉-并且什么也没有。

首先,实际上有可能吗?

如果是这样,有什么例子吗?我将添加所有有用的建议。

我专门尝试使用递归计算斐波那契数,因此如果我们可以以此为基础,那么它会很有帮助。

Ced*_*amo 5

由于BF除了磁带,指针和非常基本的循环功能外并没有提供其他任何功能(通常,您需要确保指针与开始时位于同一位置,这称为平衡循环。在极少数情况下,您可以在没有平衡的情况下执行循环(例如数组),很难在其中实现递归算法。您可以尝试在bf中模拟“正常”计算机(这完全取决于您对磁带的处理方式)。我相信C2BF项目是以这种方式工作的(它将C编译为可操之过气)。如果我没记错的话,它们将成组的单元以交替的堆栈/堆对的方式处理(使某些指针操作有所不同,因为所有操作都必须乘以2)

因此,毕竟本文是我的结论:尽管确实很困难,但仍可以在Brainfuck中实现递归算法。我敦促您记住,每个递归算法都可以迭代完成。您只需要维护自己的堆栈即可。如果要递归实现,实际上这就是最终要执行的操作。但是,如果您认为它是迭代的并维护自己的堆栈,而不是递归的,那么它将帮助您了解您的实际工作,并最终导致设计更好的算法。

  • 同样,如果您要实现的是斐波那契,则您甚至不需要维护堆栈,因为您只需要最后两个值即可。(从技术角度讲,它可以进行尾调用优化)。 (2认同)
  • 哦,因为我忘了,还可以在Brainfuck中实现_unbounded_堆栈,只要将其放在内存映射的末尾即可 (2认同)