2013-02-02 56 views
2

我正在学习有关递归和我碰到这个问题就来了:语言必须支持递归的属性是什么?

FORTRAN实现不允许递归因为

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

b。他们使用动态分配变量

c。堆栈在所有机器上都不可用

d。无法在所有机器上实现递归。

我发现答案是(A)

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

回答

5

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

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

希望这会有所帮助!