Heim  >  Artikel  >  Backend-Entwicklung  >  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
Mary-Kate OlsenOriginal
2024-11-03 10:59:29900Durchsuche

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)

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)

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)

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!

Stellungnahme:
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