Что происходит в базовом случае этого рекурсивного метода?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Что происходит в базовом случае этого рекурсивного метода?

Сообщение Anonymous »

Я отслеживаю код некоторых практических задач для курса Java для начинающих, который я прохожу. Ниже приведен один пример из полученного мной практического задания:

Код: Выделить всё

public void printStr(String s){
if (s.length() < 6){
System.out.println(s);
printStr(s + "#");
}
}
Когда я отслеживаю код вызова метода printStr("csp"), я получаю следующую трассировку стека:
Кадр стека 1: pS("csp") // печатает csp и затем вызывает printStr с csp# в качестве параметра
SF2: pS("csp#")
SF3: pS("csp##")
в этот момент... что? Достигнут ли базовый случай (длина String s не менее 6)?
Итак... что происходит дальше? Оператора возврата нет. Консоль показывает

Код: Выделить всё

csp
csp#
csp##
В частности, не должен ли метод затем пройти через все вызовы «над ним»? Я думаю, что этот метод «пробегает обратно» через все кадры стека, но больше ничего не происходит... почему? Это потому, что длина String равна 6? Что еще было бы, если бы не это? Является ли условие, использованное в приведенном выше примере, способом достижения базового случая без использования структуры if/else? Все просто вывозится мусором (если я понимаю этот термин)?
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»