Ich arbeite an Übungsproblemen für einen Test, den ich habe, und jedes Beispiel einer Schleifenvariante nahm mit jeder Iteration der Schleife ab. In diesem Fall bleiben die Werte gleich, wenn a <b. Meine Versuche haben mir auch eine Schleifenvariante gebracht, die die Chance auf ein Negativ hat, da gelegentlich a größer als b wird und umgekehrt. Irgendwelche Ratschläge zum Versuch, die Schleifenvariante für diese Frage zu finden und zu beweisen?
def mystery(a,b):
# Precondition: a >= 0 and b >= 0
while a >= 0 and b >= 0:
if a < b:
a, b = b, a
else:
a = a - 1
return a
EDIT: Für alle, die sich für diese Frage interessieren, ist meine beste Lösung wie folgt.