Heim > Backend-Entwicklung > Python-Tutorial > Warum gibt „gcdIter' bei der Berechnung des GCD „None' zurück?

Warum gibt „gcdIter' bei der Berechnung des GCD „None' zurück?

Mary-Kate Olsen
Freigeben: 2024-11-03 10:59:29
Original
919 Leute haben es durchsucht

Why Does `gcdIter` Return `None` When Calculating GCD?

Das rätselhafte Verhalten rekursiver Python-Funktionen verstehen: Warum gibt gcdIter None zurück?

Beim Umgang mit rekursiven Funktionen ist es wichtig, deren Verhalten zu verstehen Rückholmechanismus. Betrachten Sie die folgende gcdIter-Funktion, die den größten gemeinsamen Teiler (GCD) zweier Zahlen berechnen soll. Bei bestimmten Eingabewerten (z. B. 306 und 136) wird jedoch unerwartet „Keine“ zurückgegeben.

Das Problem liegt im rekursiven Teil des Codes:

gcdIter (a,b%a)
Nach dem Login kopieren

Während die Funktion a Bei einem rekursiven Aufruf an sich selbst mit den relevanten Parametern kann der Rückgabewert dieses Aufrufs nicht verarbeitet werden. Um das GCD-Ergebnis beizubehalten, muss der Rückgabewert in der Kette zurückgeleitet werden:

return gcdIter (a,b%a)
Nach dem Login kopieren

Darüber hinaus ist es ratsam, Variablenzuweisungen mit mehreren Zielen zu verwenden, um den Code zu optimieren:

def gcdIter(a, b):
    a, b = min(a, b), max(a, b)
    if b % a == 0:
        return a
    return gcdIter(a, b % a)
Nach dem Login kopieren

Durch die Behebung dieser Probleme gibt gcdIter wie erwartet konsistent die GCD für alle gegebenen Eingabewerte zurück.

Das obige ist der detaillierte Inhalt vonWarum gibt „gcdIter' bei der Berechnung des GCD „None' 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