Kurs:Algorithmen und Datenstrukturen/Vorlesung/Fakultätsfunktion




Fakultätsfunktion als imperativer AlgorithmusBearbeiten

Im Folgenden werden wir die Fakultätsfunktion als imperativen Algorithmus entwerfen.

HintergrundwissenBearbeiten

Fakultätsfunktion:  

 

 
 
 
 

Es ist:

 

Falls die Bedingung der while-Schleife   lautet, dann ist:

 

Gesucht ist das Ergebnis des Aufrufs FAC(3).

Die Abkürzung der while   für die Zeile ist

 

Die Signatur der Semantikfunktion ist

 

Die Funktion ist durch Lesen von Y im Endzustand Z definiert

 

Der Endzustand ist definiert durch

 , wobei   die Folge aller Anweisungen des Algorithmus ist.

Der initiale Zustand   ist definiert als

 

Die Zustände abkürzend ohne Variablennamen sind

 

Die AuswertungBearbeiten

 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

SchlussfolgerungBearbeiten

Das bedeutet  

 
...
 

Damit gilt

 

BeobachtungenBearbeiten

Der Übergang von der 3. auf die 4. Zeile folgt der Definition der Sequenz, indem der Sequenzoperator in einen geschachtelten Funktionsaufruf umgesetzt wird. Nur in der 5. Zeile wurde eine Wertzuweisung formal umgesetzt,später sind sie einfach verkürzt direkt ausgerechnet. In der 7. Zeile haben wir die Originaldefinition der Iteration eingesetzt (nur mit Kürzel α' statt α, da α bereits verwendet wurde). Dies entspricht im Beispiel α' = {Y:= Y · X; X:= X - 1}. Das Z in der 7. und 8. Zeile steht für den Zustand (3,1). (In späteren Zeilen analog für den jeweils aktuellen Zustand.)Bei diesem Beispiel sieht man folgendes sehr deutlich: Die Ausführung einer while-Schleife erfolgt analog zur rekursiven Funktionsdefinition!

LiteraturBearbeiten

Da die Vorlesungsinhalte auf dem Buch Algorithmen und Datenstrukturen: Eine Einführung mit Java von Gunter Saake und Kai-Uwe Sattler aufbauen, empfiehlt sich dieses Buch um das hier vorgestellte Wissen zu vertiefen. Die auf dieser Seite behandelten Inhalte sind in Kapitel 3.3.3 zu finden.