Нет вопросов, это глупый вопрос. Если человек не задает вопрос, думая, что люди сочтут его глупым, значит, он глуп на всю жизнь. :)
Теперь объяснение:
Я добавил заявление для печати, чтобы помочь вам с этим.
public static String reverseRecursively(String str) {
System.out.println("For debuging : "+str); // this is my print statement.
if (str.length() < 2) {
return str;
}
return reverseRecursively(str.substring(1)) + str.charAt(0);
}
Это печатает ниже.
For debuging : abcd
For debuging : bcd
For debuging : cd
For debuging : d
dcba
Базовые критерии для метода, возвращающего значение: str.length() < 2
.
Таким образом, когда "d" возвращается последним вызовом метода (или мы можем сказать, что четвертый вызов метода reverseRecursively(String str)
), потому что длина меньше 2. Третий вызов метода вернет
"d" + "cd".charAt(0);
что является ничем иным, как: dc.
Similary 2 метод будет использовать возвращаемое значение третьего метода (DC) и вернет значение
"dc" + "bcd".charAt(0);
который является dcb.
и поэтому первый вызов метода, в котором вы передали строку "abcd" в качестве ввода, вернется.
"dcb" + "abcd".charAt(0);
который является dcba.
Надеюсь, это поможет. Ура !!!