@DDwrt100

Как работает рекурсия в Java?

Привет всем, кто может подсказать, что происходит с функцией при таком коде ?

public void save(){
String myString =n.readstring();
if(n==null){
save();
return;
}
this.classString = myString;
}

Код может с ошибками , но суть передает, и не самый лучший. Мы читаем переменную, если в ней ничего нет, то снова вызываем функцию. Если данные есть, то пишем и закрываем переменную. Мне интересна рекурсивная часть.
В таком варианте получается, что функция в стеке остается, и порождается новая функция(как матрешка), и это будет продолжаться пока не закончится стэк JVM, или не будет получен результат. Если результат получаем, то все открытые функции схлопываются ? я правильно понимаю?
  • Вопрос задан
  • 89 просмотров
Решения вопроса 1
Erik_Mironov
@Erik_Mironov
Когда вы вызываете метод из другого метода, то вызывающий метод приостанавливается в частично завершенном состоянии. Все значения переменных вызывающей функции физически сохраняются в памяти. Метод, вызванный вызывающим его методом размещается поверх вызывающего метода и происходит все то же самое, пока соблюдается рекурсивный случай (условие, при котором метод вызывает сам себя). Когда происходит базовый случай (условие, при котором рекурсия должна быть остановлена), методы по очереди возвращают управление вызвавшему их методу, вплоть до полного завершения исходного (самого нижнего) метода.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Emphasoft Санкт-Петербург
от 200 000 до 400 000 ₽
от 140 000 до 230 000 ₽
от 150 000 до 400 000 ₽
01 мар. 2021, в 10:33
2000 руб./за проект
01 мар. 2021, в 10:22
15000 руб./за проект
01 мар. 2021, в 10:18
120000 руб./за проект