【发布时间】:2012-09-14 06:52:36
【问题描述】:
我想知道如何(或者即使可能)在没有调用自身的单独函数的情况下实现递归。 到目前为止,我见过的所有实现递归的算法都使用单独的函数。我想了很多,想出了一个想法,即带有一些可变突变的 goto 语句可以完成这项工作,但我真的不确定。 我做了一个小型研究,发现了关于这个Structured programming theorem 的信息,它证明了每个算法都可以只用三个数据结构来实现,所以这样的递归实现必须是可行的,但我仍然不能将所有东西组装成一致的知识和对整体的理解-be 方法。
【问题讨论】:
-
递归几乎是由调用自身的函数定义的。但是,每个递归都可以使用循环和堆栈来重现。
-
在 lambda 演算中,您可以使用 Fixed-point combinator 创建匿名递归 lambda 函数。为了好玩,我用 Python 做过几次,虽然我不知道它是否有实际用途。编辑:例如,这里是斐波那契函数:
(lambda f: lambda x: f(x,f))(lambda x, f: 1 if x < 1 else f(x-1,f) + f(x-2,f))(5)
标签: algorithm data-structures recursion