StefanHermann.com

Persönlicher Blog über dies & das…


Fakultät rekursiv berechnen

Bereits im Programm zur Berechnung des Cosinus mit einer Taylor-Reihe mussten wir eine Funktion finden, die uns die Fakultät einer Zahl berechnet, weil in C dazu standartmäßig keine Funktion vorhanden ist. Damals haben wir diese Berechnung mit einer ganz normalen for-Schleife bewerkstelligt.

In diesem Eintrag möchte ich aber darauf eingehen, wie man Fakultäten auch rekursiv berechnen kann. Rekursion bedeutet, dass eine Funktion sich selbst wieder aufruft. Im Allgemeinen kann man aber sagen, dass rekursive Programme langsamer in ihrer Berechnung sind als iterative. Jedoch sind rekursive Funktionen sehr elegant in ihrem Programmcode.
Dieses Programm soll dabei eine kleine Einführung in diese Art der Programmierung sein.

Die wichtigste Zeile darin ist k*fak(k-1) . Genau hier erkennt man, dass die Funktion fak() sich wieder selbst aufruft. Die Funktionsweise möchte ich an einem keinen Beispiel erklären.

Wenn wir die Fakultät von zB. 4 berechnen möchten, lautet der Ausdruck 4*fak(4-1) also 4*fak(3). Wenn man diese Rekursion weiter verfolgen und bei 1 aufhören erhalten wir folgendes: 4*fak(3*fak(2*fak(1))), was 4*3*2*1 bedeutet, also genau die Fakultät von 4.

int fak(int k)
{
    if(k <= 1)
    {
        return 1;
    }
    else
    {
        return k*fak(k-1);
    }
}
RSS 2.0 | Trackback | Comment

One Response to “Fakultät rekursiv berechnen”

  1. Anonymous

    4*fak(3*fak(2*fak(1))) hat mich erleuchtet, danke :)

Leave a Reply

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>