Berechnung der fakultaet mit Lisp
Las ich in einem code-Beispiel berechnet die Fakultät mit Lisp wie folgt:
(defun fatorial (n)
(cond
((= n 1) 1)
(t (* n (fatorial (- n 1))))))
So, ich Frage mich, was ist t
in diesem code-Beispiel? Hat es irgendeine Besondere Bedeutung in Lisp? Ich suchte aber nicht finden konnte meine Antwort!
- Ich denke, dass Sie mit dem Namen Ihrer Funktion
fatorial
weil dadurch einfat
stack-Bilanz. - Falsche denke! In Spanisch, Fakt ist geschrieben : Fatorial ! 😉
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dass das symbol, das LISP verwendet für Wahr. In einem
cond
in LISPs, die "catch-all" am Ende verwendett
zu zeigen, dass, wenn keine der vorstehenden Bedingungen zu True ausgewertet werden, dieser code wird immer ausgeführt.Betrachten es hier als äquivalent eine
else
in eine if-else. Auf der ganzen obwohl, es nur vertritt Wahr.Eines cond besteht aus den
cond
symbol, gefolgt von einer Zahl von cond-Klauseln, von denen jeder eine Liste. Das erste element eines cond-Klausel wird die Bedingung; die übrigen Elemente (wenn vorhanden) werden die Aktion. Die cond-form findet die erste Klausel, deren Bedingung zu true ausgewertet wird (dh, nicht bewerten, nil); es führt dann die entsprechende Aktion aus und gibt den resultierenden Wert.So, in Ihrem code, der Tannen-test prüft, ob n gleich 1 ist und, wenn ja, wird 1 zurückgegeben. Die andere Klausel, beginnend mit "t" (für true in lisp) ist die "else" - Teil der Bedingung.