Подпрограмма выполняется без стека? Обоснуйте свой ответ вескими аргументами - PullRequest
0 голосов
/ 07 августа 2020

Подпрограмма выполняется без стека? Обоснуйте свой ответ действительными аргументами

1 Ответ

1 голос
/ 07 августа 2020

Это скорее вопрос домашнего задания (или экзамена); особенно ожидаемые аргументы будут в лекциях и / или материалах курса.

На практике многие языки делают и то, и другое, но таким образом, что это неотличимо от постоянного использования стека, потому что стек необходим для обработки рекурсия (а в наши дни - повторный вход) и выполнение подпрограммы без использования стека рассматривается исключительно как оптимизация (часто «встраивание»).

Несколько очень старых языков (например, FORTRAN и COBOL) по умолчанию чтобы не поддерживать рекурсию (гораздо меньше повторного входа), и, следовательно, может или не может использовать стек, если подпрограмма специально не помечена как «рекурсивная». Независимо от того, используют ли они стек для нерекурсивных подпрограмм, зависит от компилятора (и может отличаться от версии к версии или даже от подпрограммы к подпрограмме).

Как это соответствует ожидаемому ответу на вашем домашнем задании ( или экзамен) зависит от того, как эти аспекты были освещены в лекциях и / или материалах курса; разные курсы будут подчеркивать разные части, особенно если они имеют дело со специфическим c языком программирования (например, Python vs C / C ++ / C# vs FORTRAN).

...