Heim > Backend-Entwicklung > Python-Tutorial > Warum gibt meine rekursive GCD-Funktion „Keine' zurück?

Warum gibt meine rekursive GCD-Funktion „Keine' zurück?

Mary-Kate Olsen
Freigeben: 2024-11-02 18:32:31
Original
351 Leute haben es durchsucht

Why Does My Recursive GCD Function Return None?

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage