
/* 
    MACRO04 : Beispiel zur Benutzung von rekursiven Funktionen
    AUTOR   : BeatniK / tRSi, Wouter van Oortmerssen
    DATE    : 19.09.95

*/


(defun fakultaet (n)        /* Funktionskopf mit Parameter n    */

    (if (eq n 1)                        /* n=1 ?                */

        1                               /* JA: Verlasse Fkt. mit Wert 1 */

        (* (fakultaet (sub n 1)) n)     /* NEIN: Rufe eigene Fkt. mit n-1 */
                                        /*       auf!                     */
    )
)


/* 

Diese Funktion erzeugt die Berechnung:

(((((1)*2)*3)*4)...*n) = 1*2*3*4*...*n = n!

*/

/* Main-Funktion */


(write 'compute factorial of: ' (fakultaet (readint)))

/*

Man beachte: Als Parameter wurde hierbei keine konkrete Zahl, sondern
eine Funktion angegeben, die eine Zahl zurueckliefert. Dies veranschaulicht
die Maechtigkeit dieser rekursiven Definition.. Dieser Write-Befehl ist
somit gleichzeitig Abfage UND Ausgabe..8)

*/
