Это действительно зависит от выбора языка.
В некоторых языках ваша бесконечная рекурсивная функция останавливается из-за переполнения стека в зависимости от условий системы или языка. Причина этого заключается в том, что многие реализации вызова и возврата функции выделяют новое пространство для каждого вызова функции, и, когда пространство исчерпано, программа завершится ошибкой. Однако на других языках (схема и различные уровни оптимизации gcc) эта программа будет работать вечно, потому что они достаточно умны, чтобы понимать, что могут повторно использовать пространство для каждого вызова.
В некоторых языках бесконечные циклы будут работать вечно. Ваша программа будет продолжать работать и никогда не будет прогрессировать. В других языках бесконечные циклы могут быть оптимизированы компилятором. В качестве примера, новый стандарт C ++ 0x говорит, что компилятору разрешается предполагать, что любой цикл либо завершит работу, либо выполнит какое-либо глобально видимое действие, и поэтому, если компилятор увидит бесконечный цикл, он может просто оптимизировать цикл из существование, поэтому цикл на самом деле завершается.
Другими словами, это действительно зависит. На этот вопрос нет быстрых ответов.
Надеюсь, это поможет!