Heim > Artikel > Backend-Entwicklung > Warum gibt meine rekursive Python-Funktion keine zurück?
Warum eine rekursive Python-Funktion None zurückgibt
In Python kann bei rekursiven Funktionen ein Problem auftreten, bei dem sie unerwartet None zurückgeben. Sehen wir uns ein konkretes Beispiel an, um die Ursache und Lösung zu verstehen.
Betrachten Sie den folgenden Codeausschnitt:
<code class="python">def gcdIter(a, b): a, b = min(a, b), max(a, b) # Assign smaller value to 'a' and larger value to 'b' if b % a == 0: print(a) return a gcdIter(a, b % a)</code>
Dieser Code soll den größten gemeinsamen Teiler (GCD) mithilfe des iterativen Ansatzes berechnen . In einigen Fällen wird jedoch fälschlicherweise None zurückgegeben.
Um zu verstehen, warum, schauen wir uns den rekursiven Aufruf an:
<code class="python">gcdIter(a, b % a)</code>
Dieser Aufruf führt einen weiteren rekursiven Aufruf der gcdIter-Funktion mit aktualisierten Werten von a durch und b. Der Rückgabewert dieses rekursiven Aufrufs wird jedoch ignoriert, was dazu führt, dass von der ursprünglichen gcdIter-Funktion „None“ zurückgegeben wird.
Die Lösung besteht darin, das Ergebnis des rekursiven Aufrufs zurückzugeben. Die korrekte Version der Funktion sieht so aus:
<code class="python">def gcdIter(a, b): a, b = min(a, b), max(a, b) # Assign smaller value to 'a' and larger value to 'b' if b % a == 0: return a return gcdIter(a, b % a)</code>
Das obige ist der detaillierte Inhalt vonWarum gibt meine rekursive Python-Funktion keine zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!