Sie verwenden größer als OR EQUAL TO, so dass Sie nicht aus der Schleife auf n = 0 ausbrechen, nur n = -3, die dann Ihre auslöst ELSE-Anweisung. Der EQUAL TO-Aspekt bringt Sie einen Schritt zu weit.
Beantworten des Kommentars: Verwenden> statt> =. Grundsätzlich erlaubt der geschriebene Code niemals, dass n zum Zeitpunkt der Auswertung der Bedingung gleich 0 ist. Verfolgen Sie jeden Schritt der Schleife mit einer Reihe wie 3.
N = 3
//first pass
WHILE (3 >= 0) // true
n = 3-3 //n now 0
//second pass
WHILE (0 >= 0) //True, 0 is equal to 0
n = 0-3 //n now -3
//third pass
WHILE(-3 >= 0) //False break out of loop
IF(-3 == 0) // false so we jump to the else
ELSE: 3 is not divisible by 3.
Eine schnelle Möglichkeit leicht zu erkennen Loops überprüfen, die nicht ausführen, wie erwartet ist nur manuell durchlaufen sie mit einem einfachen Eingang.
Fragen Sie nur nach Pseudocode oder haben Sie versucht, dies in Python zu übersetzen? –
Wenn 'n' in Ihrer while-Schleife Null ist, wird 3 wieder subtrahiert, so dass' n' niemals null ist, daher wird'IFn = 0' niemals wahr sein. –
Bist du tatsächlich mit Papier und Bleistift durchgegangen? – scrappedcola