LINUX.ORG.RU

История изменений

Исправление Egor_, (текущая версия) :

где-нибудь в стандарте языка бесконечные рекурсии запрещены?

смотря какого языка
фортран-77 попытку вызвать из процедуры её саму считал ошибкой
так и писал: «ошибка: рекурсия» и не давал запустить программу
но можно было написать две процедуры, которые вызывали друг друга

а уже потом, когда нам стали преподавать паскаль, оказалось, что рекурсия - это не ошибка (как считал фортран), а эффективный метод программирования

кстати, int f() { return f(); } - это самая простая проверка на наличие tail-call оптимизации в компиляторе/интерпретаторе
в языке с TCO программа зависает,
в языке без TCO ошибка генерится в рантайме («стек не резиновый»),
а если ошибка возникает при компиляции - то у вас фортран )))

Исходная версия Egor_, :

где-нибудь в стандарте языка бесконечные рекурсии запрещены?

смотря какого языка
фортран-77 попытку вызвать из процедуры её саму считал ошибкой
так и писал: «ошибка: рекурсия» и не давал запустить программу
но можно было написать две процедуры, которые вызывали друг друга

а уже потом, когда нам стали преподавать паскаль, оказалось, что рекурсия - это не ошибка (как считал фортран), а эффективный метод программирования

кстати, int f() { return f(); } - это самая простая проверка на наличие tail-call оптимизации в компиляторе/интерпретаторе
в языке с TCO программа зависает,
в языке без TCO ошибка генерится в рантайме,
а если ошибка возникает при компиляции - то у вас фортран )))