@DDwrt100

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

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

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

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

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

Войти через центр авторизации
Похожие вопросы