do zadania domowego Poproszono mnie o napisanie metody zawierającej niestandardową, połączoną listę. Wiem, że metoda rekursywna powinna mieć podstawową, a następnie rekurencyjną sprawę.Jednak mam pewne problemy ze zrozumieniem, jak napisać rekurencyjny przypadek metody. Do tej pory to jest to, co napisałem, ale mój kod wykonuje zasadę zasadniczą więcej niż raz. Czy możesz dać mi jakieś wskazówki?Używanie metody rekursywnej w java
public class OrderedList {
private Node first;
//Constructor
public OrderedList() {
this.first = null;
}
//Return the number of items in the list
public int size() {
int counter = 0;
Node pointer = this.first;
while (pointer != null) {
counter++;
pointer = pointer.next;
}
return counter;
}
//Return an array of copies of the stored elements
public Comparable[] getStore() {
Comparable[] elements = new Comparable[size()];
Node pointer = this.first;
if (this.first == null) {
return elements;
} else {
int i = 0;
while (pointer != null) {
elements[i] = pointer.data;
pointer = pointer.next;
i++;
}
return elements;
}
}
//true iff item matches a stored element
//Recursive
public boolean contains(Comparable item) {
//Base case
if (this.first == null) {
return false;
}
Node pointer = this.first;
this.first = this.first.next;
if (pointer.data.compareTo(item) == 0) {
return true;
}
//Recursive case
else {
boolean info = contains(item);
pointer.next = this.first;
this.first = pointer;
return info;
}
}
Dlaczego zmieniasz zmienną klasy w tej metodzie? Powinieneś używać funkcji przekazanej w 'Node', a nie' this.first'. Zmieniasz górę listy przy każdym wywołaniu tej metody. Niszczycie swoją listę! – thatidiotguy