3

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

FORTRAN 实现不允许递归,因为

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

湾。他们对变量使用动态分配

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

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

我发现答案是(a)

但我想知道编程语言支持递归的所有特性。

4

1 回答 1

6

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

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

希望这可以帮助!

于 2013-02-02T04:39:20.967 回答