2010-12-01 7 views
1

Meine Hausaufgabe ist eine rekursive statische Methode zu erstellen, die eine Arraylist von Ganzzahlen als Parameter erhält. Angenommen, es gibt Elemente, die den Wert 0 haben, und ich möchte sie auf 5 setzen, Elemente mit dem Wert 1 werden entfernt und Elemente mit dem Wert 2 werden zum Ende verschoben. Der Rest bleibt wie er ist.Rekursion, Arraylist

Ich kann über Möglichkeiten nachdenken, ohne Rekursion zu verwenden, aber wie könnte ich dieses Problem mit Rekursion lösen?

Vielen Dank.

Antwort

2

Ihr Basisfall ist eine Liste der Länge 1, die einfach zu handhaben ist.

Eine Liste der Länge 2, in der Sie wissen, dass das letzte 1 Element bereits bearbeitet wurde, ist nur geringfügig schwieriger zu handhaben.

Eine Liste der Länge N, in der Sie wissen, dass die letzten N-1 Elemente verarbeitet wurden, sollte überschaubar sein.

Also, was Sie tun können, ist die Liste, übergeben Sie die Liste minus das erste Element auf die nächste Ebene der Rekursion, dann, wenn Sie die verarbeitete Unterliste zurück, befassen sich mit diesem ersten Element.

@Steven Schlansker hat recht, aber das ist keine wirklich rekursionsfreundliche Aufgabe.

3

Das fühlt sich überhaupt nicht wie ein Problem an, das mir Rekursion bietet. Das heißt, wenn Sie verzweifelt sind, es auf diese Weise zu tun, schauen Sie sich List.subList als eine Möglichkeit an, künstlich einen "rekursiven" Fall zu konstruieren (indem Sie Elemente von der Vorderseite abschneiden) und verwenden Sie einen "Basis" -Fall einer leeren Liste.

+0

Und vergessen Sie nicht, am Ende zu sortieren. Sie können es tun, bevor Sie das alles beginnen, aber am Ende sparen Sie ein wenig Zeit, da es wahrscheinlich weniger Elemente geben würde. –

+0

"Die Hausaufgabe ** ist **, um eine rekursive statische Methode zu erstellen". Sieht für mich wie Rekursion ist eine Voraussetzung hier. –

+0

@Andreas_D: Das heißt nicht, dass du dich nicht beschweren kannst! –