Basis van programmeren (pseudocode traceren)

Het volgende programma trekt de twee gehele getallen a en b van elkaar af tot ze gelijk zijn. Wat is de waarde van k nadat het is uitgevoerd?

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
Antwoord en toelichting tonen

Antwoord: B. 4

Dit is de aftrekvorm van het algoritme van Euclides: trek de kleinste waarde af van de grootste tot de twee gelijk zijn. (a, b) verandert als (48, 18) → (30, 18) → (12, 18) → (12, 6) → (6, 6), vier aftrekkingen, dus k = 4. De uiteindelijke a = b = 6 is de grootste gemene deler. Het algoritme van Euclides met de rest (mod) heeft maar drie stappen nodig: 48 mod 18 = 12, 18 mod 12 = 6, 12 mod 6 = 0.

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over Basis van programmeren (pseudocode traceren)

  1. De volgende functie isLeap geeft true terug als het jaar y een schrikkeljaar is. and wordt vóór or geëvalueerd. Voor welke y geeft isLeap(y) true terug?
  2. ÷ staat voor deling; bij toekenning aan een variabele van het type integer (ook een argument) worden de cijfers achter de komma weggelaten. Hoe vaak wordt pow aangeroepen, de eerste aanroep meegerekend, als de volgende functie pow wordt aangeroepen als pow(2, 10)?
  3. Wat is de retourwaarde als de volgende functie s wordt aangeroepen als s(7)?
  4. Welke reeks waarden wordt afgedrukt als de volgende procedure p wordt aangeroepen als p(3)?
  5. Wat is de retourwaarde als de volgende functie fib wordt aangeroepen als fib(10)?