iterative funktion in rekursive umschreiben
-
Hallo alle zusammen!!!
Ich habe hier eine iterative Funktion um in einer einfach verketteten Liste die position eines angegebenen elements auszugeben.public int countElem_iter(int key){ int counter = 1; ListNodeSL current = this.anchor; while(current.getNext()!=null){ if(key==current.getKey()) return counter; else counter++; current = current.getNext(); } return 0; }
Kann mir jemand helfen diese Funktion in eine rekursive umzuschreiben
Mein Ansatz ist:public int countElem_rec(int key){ ListNodeSL current = this.anchor.getNext(); while(current.getNext()!=null){ if(key==current.getKey()){ current = current.getNext(); return 0+countElem_rec(current.getKey()); } else{ current = current.getNext(); return 1+countElem_rec(current.getKey()); } } return 0; }
Ich weiß einfach nicht wie ich immer wieder das Programm mit dem nächsten Element aufrufe ohne mit dem anker rumzuhantieren. Ich weiß einfach nicht wie ich die Liste durchlaufen soll ohne Hilfsvariable den die wird ja bei jedem Funktionsaufruf immer wieder neu initialisiert.
-
java-starter schrieb:
Ich weiß einfach nicht wie ich immer wieder das Programm mit dem nächsten Element aufrufe ohne mit dem anker rumzuhantieren. Ich weiß einfach nicht wie ich die Liste durchlaufen soll ohne Hilfsvariable den die wird ja bei jedem Funktionsaufruf immer wieder neu initialisiert.
Du übergibts das next element im rekursiven Aufruf und schmeißt den Anker am Anfang der Methode raus.
In etwa so(nicht getestet):
//du übergibst this.ancor als node public int countElem_rec(ListNodeSL node, int key){ if(current.getNext()!=null) return 0; if(key==current.getKey()) return 1; else int counter = 1; return counter += countElem_rec(current.getNext(), key); }
-
-
@Ravendark
müsste es, ja. Das kommt davon, wenn man einfach abpinselt