以下哪个陈述是正确的?
1) Static allocation of all data areas by a compiler
makes it impossible to implement recursion.
2) Automatic garbage collection is essential
to implement recursion.
3) Dynamic allocation of activation records is
essential to implement recursion.
4) Both heap and stack are essential to implement
recursion.
(A)仅1和2
(B)仅2和3
(C)仅3和4
(D)仅1和3答案: (D)
说明: 1)编译器静态分配所有数据区域使其无法实现递归。
诚然,函数调用堆栈需要动态分配内存,因为递归函数的调用次数未知。
2)自动垃圾收集对于实现递归至关重要。
错误,自动垃圾收集不是必需的。
3)动态分配激活记录对于实现递归至关重要。
的确如此,因为递归函数的调用次数或激活记录的数量尚不清楚。
4)堆和堆栈对于实现递归都是必不可少的。
函数调用不需要堆。它通常用于用户(或程序员)进行动态内存分配。
有关详细信息,请参见C程序的内存布局。
这个问题的测验