Читать книгу Algorithmen und Datenstrukturen - Gunter Saake - Страница 69

Beispiel 3.3 Erweiterte Funktionsdefinition

Оглавление

Als Beispiel für eine derartig erweiterte Funktionsdefinition betrachten wird die folgenden vier Definitionen:

f(x, y) = if g(x, y) then h(x + y) else h(x − y) fi
g(x, y) = (x = y) odd(y)
h(x) = j(x + 1) · j(x − 1)
j(x) = 2x − 3

Die Funktion h ruft die Funktion j zweimal auf. Ein Beispiel für die Auswertung derartiger erweiterter Terme zeigt der Aufruf f (1, 2):

f(1, 2) if g(1, 2) then h(1 + 2) else h(1 − 2) fi
if 1 = 2 odd(2) then h(1 + 2) else h(1 − 2) fi
if 1 = 2 false then h(1 + 2) else h(1 − 2) fi
if false false then h(1 + 2) else h(1 − 2) fi
if false then h(1 + 2) else h(1 − 2) fi
h(1 − 2)
h(−1)
j(−1 + 1) · j(−1− 1)
j(0) · j(−1− 1)
j(0) · j(−2)
(2 · 0− 3) · j(−2)
* (−3) · (−7)
21

Die Auswertung erfolgt dadurch, dass jeweils ein Funktionsaufruf durch den ihn definierenden Term ersetzt wird.

Mit der abkürzenden Notation * bezeichnen wir die konsekutive Ausführung mehrerer elementarer Termauswertungsschritte.


Eine Funktionsdefinition f heißt rekursiv, wenn direkt (oder indirekt über andere Funktionen) ein Funktionsaufruf f(..) in ihrer Definition auftritt.

Algorithmen und Datenstrukturen

Подняться наверх