Я не уверен, что COBOL это делает (конечно, не было в свое время), но я не могу представить, чтобы кого-то это сильно заботило.
Fortran существует с Fortran 90, но требует, чтобы вы использовали ключевое слово recursive
, чтобы сообщить ему, что подпрограмма является рекурсивной.
PL/I был почти таким же — рекурсия поддерживалась, но вы должны были явно указать, какие процедуры были рекурсивными.
Хотя я сомневаюсь, что их гораздо больше. Когда вы приступите к делу, запрет рекурсии был в основном тем, что IBM сделала в своих языковых проектах по той простой причине, что мэйнфреймы IBM (360/370/3090/...) не поддерживают стек в аппаратном обеспечении. Когда большинство языков пришли от IBM, они в основном запрещали рекурсию. Теперь, когда все они приходят из других мест, рекурсия всегда разрешена (хотя я должен добавить, что несколько других машин, особенно оригинальный Cray 1, также не имели аппаратной поддержки стека).
Прикрепляю к посту несколько видео по теме: