2013-02-02 88 views
2

我正在學習有關遞歸和我碰到這個問題就來了:語言必須支持遞歸的屬性是什麼?

FORTRAN實現不允許遞歸因爲

一個。他們使用靜態分配變量

b。他們使用動態分配變量

c。堆棧在所有機器上都不可用

d。無法在所有機器上實現遞歸。

我發現答案是(A)

但我想知道所有的編程語言應該支持遞歸功能。

回答

5

爲了支持一般遞歸,語言需要一種方法來爲同一函數的不同調用分配不同的激活記錄。這樣,在一次遞歸調用中分配的局部變量可以與在另一次調用中分配的局部變量共存。

有很少的語言,由設計不能支持遞歸;這些通常是語言,沒有明確的功能概念(以brainf * ck爲例)。現在大多數語言都有運行時環境,包括顯式函數堆棧或其他一些分配堆棧幀的方式。因此,大多數現代語言都支持遞歸。除了FORTRAN和深奧的語言,我不知道任何不支持它的語言。

希望這會有所幫助!