2009-02-08 3 views
5

Ich hatte vor ein paar Tagen eine Prüfung und heute gab uns der Lehrer die Schlüsselantwort der Prüfung.Wie berechnet man die Anzahl der Operationen, die während der Ausführung einer for-Schleife auftreten?

Eine der Fragen war

for (j = 9; j >= 1; j--) 

Zählen Sie die Anzahl der Operationen

Das Ergebnis war 20.

Kann mir jemand erklären, wie er 20 Operationen aus, dass bekommt?

+0

Schöne Antworten, aber nicht viel Aufwand von Maya. Dies ist kein Hausaufgabenforum. – duffymo

+0

Nein ist es nicht, aber ich bin ein zwanghafter Helfer ;-). –

+0

@ löffel16: Das war eine sehr wenig hilfreiche Bearbeitung, IMHO. Es macht den Titel schwer zu lesen auf dieser Website, schwer zu suchen, und in der Regel nur ein schlechter Titel. Die Frage wird im Textkörper vollständig wiederholt. Keine Notwendigkeit, es in den kurzen (!!!) Titel zu drücken. –

Antwort

14

20 Operationen:

set j = 9 
check if j(9) >= 1 
set j to 8 
check if j(8) >= 1 
set j to 7 
check if j(7) >= 1 
set j to 6 
check if j(6) >= 1 
set j to 5 
check if j(5) >= 1 
set j to 4 
check if j(4) >= 1 
set j to 3 
check if j(3) >= 1 
set j to 2 
check if j(2) >= 1 
set j to 1 
check if j(1)>=1 
set j to 0 
check if j(0)>=1 

for (j = n; j> = 0; J--)

Ok, Sie mit zwei Operationen beginnen:

  • (j = n)
  • überprüfen (j> = 0).

Für alle < 0 stoppt es dort.

Wenn n = 0, erhalten Sie eine aditional erhalten:

  • J--
  • Prüfung (j> = 0).

Für n = 1, erhalten Sie einen anderen Satz von denen.

Also die Anzahl der Operationen ist 2 für n < 0 und 2n + 4 für n> = 0.

Diese Dinge sind nicht so schwer. Sie müssen nur wie ein Computer denken und jede Änderung des Zustands (Satz von Variablen) sorgfältig notieren.

+0

Eigentlich ist das eine sehr Erklärung. :) – BobbyShaftoe

+0

Das ist ein großer thanx viel können Sie in der gleichen explaine diese for (j = n; j> = 0; J--) for (j = 1; j <10; j ++) –

+0

Hey Maya Jetzt, da dir das Angeln beigebracht wurde, ist es an der Zeit, es zu versuchen. Befolgen Sie die Methodik und sehen Sie, was Sie bekommen. – duffymo

3

Nun, in der ersten Iteration wird j auf 9 gesetzt. Danach führt jede Iteration im Grunde die gleichen zwei Anweisungen:

  • ersten, Test ob j >= 1 und
  • Sekunden, dekrementieren j (j--).

Dies geschieht neun Mal (von 9 einschließlich zu 0 einschließlich). In der allerletzten Iteration testen wir erneut, ob j >= 1 und da dies falsch ist, verlassen wir die Schleife. Wir erhalten daher 1 + 9 * 2 + 1 = 20 Iterationen.

0

Welchen Wert haben Sie notiert? Nur neugierig.

Lasst uns sie zusammen zählen, maya:

for (j = 9; j >= 1; j--) 

eine für 9 bis j Zuordnung = 1; ein Vergleich des aktuellen Wertes von j zu 1 für jede Iteration der Schleife = 10; ein Dekrement von j für jede Iteration der Schleife mit Ausnahme der letzten = 9;

1 + 10 + 9 = 20 in meinem Buch.

0

Sie haben 1 Zuweisung (j = 9). Die "j--" Operation wird 9 mal ausgeführt; Die bedingte Prüfung "j> = 1" wird 10 Mal ausgeführt (bei jeder Iteration, die Sie die Frage stellen "ist j> = 1"), die letzte wird fehlschlagen. Also hast du 1 + 9 + 10 = 20.

Dein Lehrer ist sehr, sehr schlecht wenn er so gemein ist, nicht zu helfen. Das ist eine dieser Fragen, die du entweder bekommst oder nicht. Der Lehrer sollte helfen. :)

+0

Ich würde mehr Kontext wünschen, bevor ich entschied, dass der Lehrer "gemein" oder "schlecht" war. – duffymo

+0

Nun, es ist kein absolutes Urteil. Wenn Sie Logik verwenden, habe ich ein "Konditional" verwendet, das besagt: "Wenn er so gemein sein soll, dass er keine Hilfe anbietet, dann ist er sehr, sehr schlecht." Nur Grundlogik 101. :) Ich sehe solche Profs oft, es ist ärgerlich. Wenn das OP jedoch falsch ist, dann ist es kein Schaden, kein Foul. :) – BobbyShaftoe

Verwandte Themen