Наличие стека на всех равно особая обработка, которую должен иметь компилятор при поддержке рекурсии.
В более старых языках программирования, таких как ранние версии FORTRAN, среда выполнения не имеластек функций и каждая функция имела ровно одну запись активации, зарезервированную для нее где-то в памяти.Это означало, что рекурсия вообще невозможна, потому что если вы рекурсивно вызываете функцию, вы перезаписываете ее единственную запись активации, теряя при этом контекст того, как вы туда попали.
Введение функцииСтек - это то, что первая рекурсия позволила фактически выразить на языке программирования.До этого программисты использовали рекурсию как инструмент для абстрактного решения проблемы, но затем должны были бы преобразовать этот код в итеративную логику из-за отсутствия стека вызовов.
Для того, чтобы язык программированияДля поддержки рекурсии необходим механизм динамического обслуживания стека вызовов.Это не должно быть через явный стек;теоретически вы можете динамически распределить все кадры стека и связать их вместе в виде связанного списка.Это может быть полезно, например, если вы хотите поддерживать сопрограммы или замыкания и вам действительно нужно сохранить старые записи активации после возврата функции, чтобы данные могли быть сохранены позже.
Надеюсь, это поможет!