Wäre jemand bereit zu erklären, warum das erste nicht funktioniert, aber das zweite tut?Returning Funktionen oder Werte: rekursive Python-Funktionen
Im ersten berechnet die Funktion die endgültige bereinigte Wert ...
# returns None
def _pareRotation(degs):
if degs > 360:
_pareRotation(degs - 360)
else:
print "returning %s" % degs
return degs
... aber gibt None
:
print _pareRotation(540)
>> returning 180
>> None
Wenn wir jedoch die Dinge ein wenig und Rückkehr Flip die Funktion ...
# returns expected results
def _pareRotation(degs):
if degs < 360:
print "returning %s" % degs
return degs
else:
return _pareRotation(degs - 360)
... es funktioniert wie erwartet:
print _pareRotation(540)
>> returning 180
>> 180
Meistens wundern, was bewirkt, dass None
aus der rekursiven Schleife ausgeworfen werden?
Es sollte eine kanonische Frage für dieses sein, wenn es nicht bereits gibt. Diese Art von Rekursionsfehler kommt mindestens 5 Mal pro Tag auf diesem Tag vor. –
Gute Trauer, und da ist es. Vielen Dank. Ich stimme @ Two-BitAlchemist zu, aber es könnte einige subtile Abweichungen in den Fragen geben. Ich hatte Probleme, die Idee zu knacken, dass die Zielvariable - sagen wir "final_degs" - in gewisser Weise die rekursive Funktion "werden" würde. Wenn ich 'final_degs = _pareRotation (540)' ausführe, und ich 'final_degs' drucke oder verwende, verwende ich tatsächlich eine Variable, die einige Transformationen durchlaufen hat (Funktion zu int). Ist das eine genaue Art darüber nachzudenken? – ghukill