Finde die zweitkleinste Zahl in einer Liste mit der Rekursion

Ich weiß, dass zu diesem Thema eine Frage gestellt wurde, aber keine der Antworten hat mir geholfen. Ich brauche keine Hilfe bei der Implementierung des Codes, sondern nur Hilfe beim Durchsuchen des rekursiven Prozesses.

Ich dachte ursprünglich, rekursiv ein Tupel für jede Ebene zurückzugeben und zu vergleichen, um den zweitkleinsten Wert zu finden. Dies funktioniert jedoch nicht, da meine Funktion am Ende nur 1 Wert zurückgeben soll - den zweitkleinsten Wert.

Wie würde ich den rekursiven Prozess für dieses Problem durchführen? Vielen Dank

Bearbeiten: Es tut uns leid, dass wir nicht genügend Details angeben.

Funktion sollte wie folgt funktionieren:

>>> sm([1,3,2,1,3,2])
>>> 2

Second edit: Sorry für die Verspätung, ich war bis jetzt beschäftigt, konnte mich endlich hinsetzen und das, was ich im Sinn hatte, in Code umwandeln. Es funktioniert wie beabsichtigt, aber ich denke ehrlich, dass dies eine sehr beschissene und ineffiziente Art der Rekursion ist, wie Sie wahrscheinlich feststellen können, dass ich neu in dem Konzept bin.

Um meine ursprüngliche Frage mit dem folgenden Pseudocode umzuformulieren: Ist es möglich, das zu tun, was ich hier getan habe, ohne es in eine zweite Funktion zu packen? Ist es also möglich, eine Funktion zu haben, die sich nur rekursiv selbst aufruft und eine Zahl zurückgibt - die zweitkleinste Zahl?

def second_smallest(list):
    def sm(list):
        if base case(len of list == 2):
            return ordered list [2nd smallest, smallest]
        else:
            *recursive call here*
            compare list[0] with returned ordered list
            eg: [3, [5,2]]
            re-arrange, and return a new ordered list
            [3,2]
    return sm(list)[0]

Antworten auf die Frage(14)

Ihre Antwort auf die Frage