| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: Общие вопросы > Бесконечная рекурсия и бесконечный цикл |
| Автор: Entry_N3 8.12.2009, 18:36 |
| Почему при бесконечной рекурсии Java падает с ошибкой, а при бесконечном цикле не падает? Кто знает, наверное, поймет вопрос. |
| Автор: DarkProg 8.12.2009, 18:58 |
| Вообще-то это у любого языка, не только у Java Дело в том что при бесконечной рекурсии происходит вызов процедуры из самой себя же и предыдущая которая вызывалась попадает в программный стэк, который ограничен по своему объёму и как следствие ограниченности объёма происходит его переполнение при бесконечной рекурсии(я прошу прощение за некоторую безграмотность и невнятность написанного, это всё из-за сильного недосыпа) А когда происходит бесконечный цикл, даже если в его основе лежит таже процедура, то тут пухнет уже объём занимаемый в ОЗУ, ну как бы программный стэк он ограничен и конечен(пэтому он переполняется), а если использовать бесконечный цикл, то тут уже другое. Правда если цикл слишком уж долго будет выполняться, то тут как никрути система сама скинет прогу считая её повисшей(сам наблюдал чистол ради эксперимента) Ещё раз прошу проение за некоторую бессвязность моей речи... |
| Автор: Entry_N3 9.12.2009, 12:25 |
| Понятно, спасибо. |
| Автор: kosmonaFFFt 10.12.2009, 21:21 |
| Насчет Java это верно - нету там оптимизации хвостовой рекурсии в компиляторе (javac)... |
| Автор: ivanovpv 11.12.2009, 09:56 |
Если короче, то происходит переполнение стека... |