C-Programmierung

Funktionsdefinition

Einsatz von Funktionen | | Funktionshierarchie

Ein einfaches Beispiel einer Funktionsdefinition anhand des ggT:

Ausgehend von der mathematischen Definition des größten gemeinsamen Teilers $ggT(a,b)$

$ ggT(a,b) = ggT(b,a \textrm{ mod } b) \quad \forall a,b>0 $.

ergeben sich die Ein- und Ausgabewerte zu:

in: $a,b$
out: $ggt(b,a \textrm{ mod } b)$

und damit die Funktionsdeklaration in C:

unsigned int gcd(unsigned int a, unsigned int b);

Die Implementierung des Algorithmus, d.h. die Definition von $gcd(a,b)$, läßt sich in C äquivalent formulieren:

/* greatest common divisor */
unsigned int gcd(unsigned int a, unsigned int b)
{
   if (b>0) return(gcd(b, a%b));
   else return(a);
}

Q Die Funktion gcd ruft sich selber auf, ist das überhaupt erlaubt?

Ja, man spricht hier von einer rekursiven Funktion, welche durch das Konzept der Stapelmaschine realisierbar ist.

Einsatz von Funktionen | | Funktionshierarchie

Options: