История изменений
Исправление Egor_, (текущая версия) :
где-нибудь в стандарте языка бесконечные рекурсии запрещены?
смотря какого языка
фортран-77 попытку вызвать из процедуры её саму считал ошибкой
так и писал: «ошибка: рекурсия» и не давал запустить программу
но можно было написать две процедуры, которые вызывали друг друга
а уже потом, когда нам стали преподавать паскаль, оказалось, что рекурсия - это не ошибка (как считал фортран), а эффективный метод программирования
кстати, int f() { return f(); }
- это самая простая проверка на наличие tail-call оптимизации в компиляторе/интерпретаторе
в языке с TCO программа зависает,
в языке без TCO ошибка генерится в рантайме («стек не резиновый»),
а если ошибка возникает при компиляции - то у вас фортран )))
Исходная версия Egor_, :
где-нибудь в стандарте языка бесконечные рекурсии запрещены?
смотря какого языка
фортран-77 попытку вызвать из процедуры её саму считал ошибкой
так и писал: «ошибка: рекурсия» и не давал запустить программу
но можно было написать две процедуры, которые вызывали друг друга
а уже потом, когда нам стали преподавать паскаль, оказалось, что рекурсия - это не ошибка (как считал фортран), а эффективный метод программирования
кстати, int f() { return f(); }
- это самая простая проверка на наличие tail-call оптимизации в компиляторе/интерпретаторе
в языке с TCO программа зависает,
в языке без TCO ошибка генерится в рантайме,
а если ошибка возникает при компиляции - то у вас фортран )))