过程递归和堆栈

时间:2013-10-14 19:26:30

标签: recursion stack runtime semantics

为了模拟过程的运行时语义,已知通常需要堆栈。 1.如果语言不允许程序递归,我们是否必须有堆栈? 2.如果语言确实允许过程递归,但递归调用只能在过程结束时发生,那么我们是否必须有堆栈?

1 个答案:

答案 0 :(得分:0)

  1. 没有。但是,如果语言完成,您可以根据需要模拟一个。例如。 Brainf ** k没有堆栈,我用它做了LISP1 interpreter,支持程序和宏。

  2. 这取决于。传统上,您需要一种方法来拥有多个嵌套参数,根据定义,这是一个堆栈。如果你的程序没有参数,只能在代码的末尾调用别的东西那就好像程序给出的价值低于goto。但是,如果你的意思是尾部而不是结尾那么它就会像没有参数的goto一样好。

相关问题