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!