После вызова метода
node.nth(5)
в нижнем коде,
public class List_Node {
int item;
List_Node next;
public List_Node() {
this.item = 0;
this.next = null;
}
public List_Node(int item, List_Node next) {
this.item = item;
this.next = next;
}
public List_Node(int item) {
this(item, null);
}
public void insertAfter(int item) {
this.next = new List_Node(item, this.next);
}
public List_Node nth(int position) {
if (position == 1) {
return this;
} else if((position < 1) || (this.next == null)) {
/* error checking */
return null;
} else {
return this.next.nth(position - 1);
}
}
public static void main(String[] args){
List_Node node = new List_Node(0);
List_Node temp = node;
for (int item = 1; item < 5; item++) {
temp.insertAfter(item);
temp = temp.next;
}
System.out.println(node.nth(5).item);
}
}
Ниже представлен кадр стека, который я могу представить для метода nth()
после 4 рекурсивных вызовов.
Мой вопрос:
В соответствии с приведенной выше диаграммой. Предполагая, что экземпляр записи активации S5
со значением pos
как 1
, я хотел бы понять, что происходит, когда java выполняет return this
?
Соответствует ли java значение this
в S5
как значение this
в S4
? Поскольку в else{}
блоке метода nth()
отсутствует оператор присваивания (как таковой).
Примечание. Пожалуйста, игнорируйте стиль кодирования Java, как новый ученик.