Rekursion
Die Legendenfunktion:(define (facu n)
(cond ((equal? n 0) 1)
(else (* n (facu (- n 1))))))
macht im Prinzip folgendes:
Die Funktion heißt facu und braucht den Parameter n, also die Eingabe des Nutzers.
Die Bedingung lautet: Sobald die Rückgabe des Wertes n = 0 ist, wird 1 zurückgeliefert.
Aber solange dies nicht der Fall ist passiert die Rekursion:
N wird mit dem Wert aus facu (- n 1), also dem Wert der um 1 geringer als n ist, und der durch die Methode facu ermittelt wird, multipliziert. Da die Rechnung hier mit einem
6 x facu (5) gerechnet wird, ergibt sich für facu (5) (rekursiver Abstieg)
facu (5) = 5 x facu (4) usw.
Bis da irgendwann steht
facu (1) = 1x facu (0)
Und dies ergibt 0. Dieser Wert wird wieder nach oben durchgerechet (rekursiver Aufstieg) und 0 wird für facu (1) eingesetzt, da 1 x 0 = 0. Da jede Multiplikation mit 0 auch = 0 ist, ist das Ergebnis 0.
Die cond Bedingung setzt hier ein: Sobald die Ausgabe 0 erfolgt ist, wird für die 0 eine 1 eingesetzt.
Das heißt dass auch 1 x 0 von eben ein 1 x 1 wird, also = 1. Damit ist facu (2) = 2 x 1 (ehemals facu(1) usw.
Am Ende kommt dann ein facu (6) = 6 x 120 (ehemals facu (5)) heraus.
macht im Prinzip folgendes:
Die Funktion heißt facu und braucht den Parameter n, also die Eingabe des Nutzers.
Die Bedingung lautet: Sobald die Rückgabe des Wertes n = 0 ist, wird 1 zurückgeliefert.
Aber solange dies nicht der Fall ist passiert die Rekursion:
N wird mit dem Wert aus facu (- n 1), also dem Wert der um 1 geringer als n ist, und der durch die Methode facu ermittelt wird, multipliziert. Da die Rechnung hier mit einem
6 x facu (5) gerechnet wird, ergibt sich für facu (5) (rekursiver Abstieg)
facu (5) = 5 x facu (4) usw.
Bis da irgendwann steht
facu (1) = 1x facu (0)
Und dies ergibt 0. Dieser Wert wird wieder nach oben durchgerechet (rekursiver Aufstieg) und 0 wird für facu (1) eingesetzt, da 1 x 0 = 0. Da jede Multiplikation mit 0 auch = 0 ist, ist das Ergebnis 0.
Die cond Bedingung setzt hier ein: Sobald die Ausgabe 0 erfolgt ist, wird für die 0 eine 1 eingesetzt.
Das heißt dass auch 1 x 0 von eben ein 1 x 1 wird, also = 1. Damit ist facu (2) = 2 x 1 (ehemals facu(1) usw.
Am Ende kommt dann ein facu (6) = 6 x 120 (ehemals facu (5)) heraus.