Heim >Backend-Entwicklung >Python-Tutorial >Warum gibt meine rekursive GCD-Funktion „Keine' zurück?
Den Rückgabewert in rekursiven Python-Funktionen verstehen
Bei rekursiven Funktionen ist es entscheidend, den Rückgabewert des rekursiven Aufrufs korrekt zu verarbeiten, um ihn zu erhalten das gewünschte Ergebnis. Sehen wir uns den bereitgestellten Code an, um zu verstehen, warum er in bestimmten Fällen None zurückgibt.
Die Funktion gcdIter zielt darauf ab, den größten gemeinsamen Teiler (GCD) zweier Zahlen mithilfe eines iterativen Ansatzes zu ermitteln. Das Problem liegt jedoch im rekursiven Aufruf:
<code class="python">gcdIter(a, b%a) </code>
Die Funktion kann den Rückgabewert des rekursiven Aufrufs nicht zuweisen. Standardmäßig gibt Python „None“ zurück, wenn eine Funktion nicht explizit einen Wert zurückgibt. Wenn die Funktion also rekursiv aufgerufen wird, überschreibt der Wert „Keine“ den korrekten GCD-Wert.
Um dies zu beheben, müssen wir den Rückgabewert des rekursiven Aufrufs mit dem Schlüsselwort „return“ übergeben:
<code class="python">return gcdIter(a, b % a)</code>
Jetzt weist die Funktion den aus dem rekursiven Aufruf erhaltenen GCD-Wert zu und stellt so sicher, dass das richtige Ergebnis zurückgegeben wird.
Darüber hinaus kann der Code durch die Verwendung mehrerer Zielzuweisungen in der Funktionsdefinition weiter vereinfacht werden:
<code class="python">def gcdIter(a, b): a, b = min(a, b), max(a, b) if b % a == 0: return a return gcdIter(a, b % a)</code>
Alternativ kann eine kompaktere Version der iterativen GCD-Funktion wie folgt ausgedrückt werden:
<code class="python">def gcd_iter(a, b): return gcd_iter(b, a % b) if b else abs(a)</code>
Durch Korrektur des rekursiven Aufrufs und Verwendung geeigneter Rückgabewerte kann die gcdIter-Funktion dies tun Finden Sie effektiv den GCD von zwei Zahlen, ohne auf jeden Fall None zurückzugeben.
Das obige ist der detaillierte Inhalt vonWarum gibt meine rekursive GCD-Funktion „Keine' zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!