子程序是在没有堆栈的情况下执行的吗?用有效的论据来证明你的答案



是否在没有堆栈的情况下执行子例程?用有效的论据证明你的答案

这更像是一道家庭作业(或考试(题;特别是预期的论点将出现在讲座和/或课程材料中。

在实践中,许多语言同时使用这两种语言,但在某种程度上,它与总是使用堆栈是无法区分的,因为堆栈是处理递归(以及现在的可重入性(所必需的,而在不使用堆栈的情况下执行子例程纯粹被视为优化(通常是"内联"(。

一些非常古老的语言(如FORTRAN和COBOL(默认不支持递归(更不用说可重入性(,因此可能使用也可能不使用堆栈,除非子程序被特别标记为"可重入";递归";。它们是否将堆栈用于非递归子例程取决于编译器(并且可能因版本而异,甚至因子例程而异(。

这与你的家庭作业(或考试(的预期答案如何对应,取决于讲座和/或课程材料中如何涵盖这些方面;不同的课程会强调不同的部分,特别是如果它们涉及特定的编程语言(例如Python与C/C++/C#与FORTRAN(。

最新更新