Basis van programmeren (pseudocode traceren)

÷ 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)?

○integer: pow(integer: x, integer: n)
  if (n = 0)
    return 1
  endif
  integer: h ← pow(x, n ÷ 2)
  if (n mod 2 = 0)
    return h × h
  endif
  return h × h × x
  1. A5
  2. B10
  3. C11
Antwoord en toelichting tonen

Antwoord: A. 5

pow(x, n) berekent x tot de macht n door het resultaat van pow(x, n ÷ 2), met n gehalveerd, te kwadrateren (en nog eens met x te vermenigvuldigen als n oneven is). n wordt achtereenvolgens 10, 5, 2, 1 en 0, en de recursie stopt bij n = 0, dus pow wordt 5 keer aangeroepen. De retourwaarde is 2¹⁰ = 1024. Wie n telkens met 1 verlaagt, zoals in x × pow(x, n − 1), krijgt 11 aanroepen, van n = 10 tot 0. Door n te halveren groeit het aantal aanroepen ruwweg evenredig met log₂ n.

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over Basis van programmeren (pseudocode traceren)

  1. Wat is de retourwaarde als de volgende functie s wordt aangeroepen als s(7)?
  2. Welke reeks waarden wordt afgedrukt als de volgende procedure p wordt aangeroepen als p(3)?
  3. Wat is de retourwaarde als de volgende functie fib wordt aangeroepen als fib(10)?
  4. Hoe vaak wordt c aangeroepen, de eerste aanroep meegerekend, als de volgende functie c wordt aangeroepen als c(4, 2)?
  5. ⊕ is de bitsgewijze exclusieve OF. Welke waarden hebben x en y nadat het volgende programma is uitgevoerd?