Grundlagen der Programmierung (Pseudocode nachverfolgen)

Das folgende Programm subtrahiert die beiden ganzen Zahlen a und b voneinander, bis sie gleich sind. Welchen Wert hat k nach der Ausführung?

integer: a ← 48, b ← 18, k ← 0
while (a ≠ b)
  if (a > b)
    a ← a − b
  else
    b ← b − a
  endif
  k ← k + 1
endwhile
  1. A3
  2. B4
  3. C6
Antwort und Erläuterung anzeigen

Antwort: B. 4

Das ist die Subtraktionsform des euklidischen Algorithmus: Der kleinere Wert wird so lange vom größeren abgezogen, bis beide gleich sind. (a, b) ändert sich als (48, 18) → (30, 18) → (12, 18) → (12, 6) → (6, 6), also vier Subtraktionen, daher ist k = 4. Das abschließende a = b = 6 ist der größte gemeinsame Teiler. Der euklidische Algorithmus mit dem Rest (mod) braucht nur drei Schritte: 48 mod 18 = 12, 18 mod 12 = 6, 12 mod 6 = 0.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Grundlagen der Programmierung (Pseudocode nachverfolgen)

  1. Die folgende Funktion isLeap gibt true zurück, wenn das Jahr y ein Schaltjahr ist. and wird vor or ausgewertet. Für welches y gibt isLeap(y) true zurück?
  2. ÷ ist die Division; wird das Ergebnis einer ganzzahligen Variablen (auch einem Funktionsargument) zugewiesen, wird der Nachkommaanteil abgeschnitten. Wie oft wird pow einschließlich des ersten Aufrufs aufgerufen, wenn die folgende Funktion pow als pow(2, 10) aufgerufen wird?
  3. Was gibt die folgende Funktion s beim Aufruf s(7) zurück?
  4. Welche Folge von Werten wird ausgegeben, wenn die folgende Prozedur p als p(3) aufgerufen wird?
  5. Was gibt die folgende Funktion fib beim Aufruf fib(10) zurück?