Verwendung von rekursiv, um die maximale Anzahl in einer Liste von Zahlen in Python zu finden


Anfänger:

Ich bin neu in der Programmierung und lerne Python.

Als Übung versuche ich, eine rekursive Funktion zu schreiben, die die maximale Anzahl in einer Liste von Zahlen erhält.

Dies ist, was ich versucht habe, aber es funktioniert nicht richtig. Kann mir bitte jemand sagen, was ich falsch mache? Danke dir!

PS Ich weiß, dass dieser Algorithmus geschrieben werden kann, indem man [1:] der Listenelemente nimmt, und das habe ich im Internet gefunden. Ich möchte wissen, was an meiner Vorgehensweise falsch ist, damit ich daraus lernen kann. Danke dir!

def get_max_in_list(data):
    if len(data) == 1:
        return data[0]
    number = data.pop()
    return number if number > get_max_in_list(data) else get_max_in_list(data)

data = [2, 6, 8, 3]
print(get_max_in_list(data))
BallpointBen:

Ihr Problem ist , dass jeder Aufruf von get_max_in_listmodifiziert datadurch Knallen, das heisst die beiden Anrufe get_max_in_list(data)in return number if number > get_max_in_list(data) else get_max_in_list(data)auf zwei verschiedenen Versionen von Betriebs data. Sie können dies beheben, indem Sie den Wert so speichern, dass Sie ihn nur einmal aufrufen müssen. Eine bessere Option ist jedoch, die Eingabe nicht zu ändern.

def get_max_in_list(data):
    if len(data) == 1:
        return data[0]
    number = data.pop()
    m = get_max_in_list(data)
    return number if number > m else m

Verwandte Artikel