Rekursive Methode zum finden einer Zahl im Array?

4 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Ganz einfach:

search (arr, len, val):
    if arr[len]==val:
        return True
    if len==0:
        return False
    return search (arr, len-1, val)

Das ist eien Möglichkeit es rekursiv anzuegeh - Du kannst auch, wenn das Array ein Längenattribut besitzt auch das Array kürzen, dann gibst Du bei leerem Array eben false zurück.

So kompliziert sind Arrays auch wieder nicht. Sie haben eine fixe Länge, enthalten stets Daten eines Typs, und einzelne Elemente können per Index abgerufen werden. Es ist ja auch nicht so, dass es nicht unzählige Tutorials zum Thema im Netz gäbe.

Die Rekursion ist auch nicht weiter schwer. Fange von einem Ende (z.B. von vorn) an und schau, ob das erste Element das Gesuchte ist. Wenn nicht, dann Rekursion mit dem Rest des Arrays. Abbruchbedingung: es gibt keine Elemente mehr. Komplizierter ist nicht nötig, zumal die Liste/das Array offenbar nicht sortiert ist.

Halbiere das Array, suche in beiden Hälften, halbiere die Hälfte usw., bis du nur noch ein Element hast und vergleiche das mit dem gesuchten Element.

Die Funktion könnte zwei Parameter StartIndex und EndIndex haben. Wenn StartIndex == EndIndex, hat die "Hälfte" nur noch ein Element.

Es muss rekursiv arbeiten? Was für ein Müll...
Das soll derjenige, der die Aufgabe gestellt hat, mal mit einem großen Array probieren, der wird feststellen, dass ihm das Programm abschmiert.

Aber wie auch immer

Gib der Methode einen weiteren Parameter "currentIndex".
Wenn für den Index der Wert nicht passt, erhöhe ihn und rufe die Methode mit dem erhöhten Index auf.
Oder umgekehrt, fange mit dem höchsten Index (Länge - 1) an und zähle immer 1 runter, bis Du bei 0 bist.
Fertig ist eine völlig sinnlos rekursive Methode.

Woher ich das weiß:Berufserfahrung