Может кто-нибудь объяснить, почему печатаются две последние строки? Я понимаю, что второй вызов функции установит счет после 0: Hello, значение count: 1. Итак, как только мы передадим этот аргумент 0 нашему методу, оператор , если вернет true и выйдет метод при ударе о возвращения заявления, но представляется, что программа будет в еще заявления, даже если если является истинной! Я отлаживал и видел пошаговый анализ, но все еще не понимал этого. Я думаю, что только первые две строки должны быть напечатаны, и после этого программа должна прекратиться. Кроме того, почему счетчик увеличивается в последнем заявлении println? Благодаря!Head Recursion Java
public class RecursionEx {
void myMethod(int counter){
if(counter == 0){ //Base Case
return;
} else {
System.out.println("Hello, "+"value of count: "+counter);
myMethod(--counter);
System.out.println("value of count: "+counter);
return;
}
}
public static void main (String args[]){
new RecursionEx().myMethod(2);;
}
}
/*
OUTPUT:
Hello, value of count: 2
Hello, value of count: 1
value of count: 0
value of count: 1
*/
Локальные переменные метода хранятся в стеке. Поэтому каждый вызов метода получает свою собственную копию этих переменных. –
Ваш отпечаток ужасен, это делает ваш код болезненным для чтения. Пожалуйста, исправьте это – Dici