Grundlagen der Programmierung (Pseudocode nachverfolgen)

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

○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
Antwort und Erläuterung anzeigen

Antwort: A. 5

pow(x, n) berechnet x hoch n, indem das Ergebnis von pow(x, n ÷ 2) mit halbiertem n quadriert wird (bei ungeradem n wird zusätzlich einmal mit x multipliziert). n ändert sich zu 10, 5, 2, 1 und 0, und bei n = 0 endet die Rekursion; pow wird also 5-mal aufgerufen. Der Rückgabewert ist 2¹⁰ = 1024. Würde n wie bei x × pow(x, n − 1) jeweils um 1 verringert, gäbe es 11 Aufrufe, von n = 10 bis 0. Durch das Halbieren von n wächst die Zahl der Aufrufe ungefähr proportional zu log₂ n.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Grundlagen der Programmierung (Pseudocode nachverfolgen)

  1. Was gibt die folgende Funktion s beim Aufruf s(7) zurück?
  2. Welche Folge von Werten wird ausgegeben, wenn die folgende Prozedur p als p(3) aufgerufen wird?
  3. Was gibt die folgende Funktion fib beim Aufruf fib(10) zurück?
  4. Wie oft wird c einschließlich des ersten Aufrufs aufgerufen, wenn die folgende Funktion c als c(4, 2) aufgerufen wird?
  5. ⊕ ist das bitweise exklusive ODER. Welche Werte haben x und y, nachdem das folgende Programm ausgeführt wurde?