语言必须具有哪些属性才能支持递归?

时间:2013-02-02 04:32:31

标签: recursion programming-languages

我正在研究递归,我遇到了这个问题:

  

FORTRAN实现不允许递归,因为

     

一个。他们对变量使用静态分配

     

湾他们使用动态分配变量

     

℃。堆栈并非在所有机器上都可用

     

d。不可能在所有机器上实现递归。

我发现答案是(a)

但我想知道编程语言应该支持递归的所有功能。

1 个答案:

答案 0 :(得分:5)

为了支持一般递归,语言需要一种为同一函数的不同调用分配不同激活记录的方法。这样,在一个递归调用中分配的局部变量可以与在不同调用中分配的局部变量共存。

根据设计,很少有语言不支持递归;这些通常是没有明确功能概念的语言(以brainf * ck为例)。如今,大多数语言都有运行时环境,包括显式函数堆栈或其他一些分配堆栈帧的方法。因此,大多数现代语言都支持递归。除了FORTRAN和深奥的语言,我不知道任何不支持它的语言。

希望这有帮助!