Ich habe mich entschieden, heute LISP zu lernen, und habe damit ein bisschen herumgespielt. Ich schrieb eine einfache Babyfunktion, nur um mein Verständnis zu testen, und verstehe jetzt, dass mein Verständnis nicht so viel versteht, wie ich es verstanden habe. : DEinfache LISP-Funktion funktioniert nicht
Wie auch immer, hier ist die Funktion. Die Idee ist, dass, wenn es aufgerufen wird, z.B. (esexp base x) sollte die Wertbasis^x zurückgeben. So (esexp 3 4) = 3^4 = 81.
(ich bin mit der CMU Implementierung von Common Lisp, wenn es ankommt.)
(defun esexp (base x)
(if (= x 0)
1
(if (< x 0)
(/ esexp (base (+ x 1)) base)
(* esexp (base (+ x 1)) base))))
Das funktioniert nicht. Ich bekomme Fehler, die aussehen (Warnung: Diese Variable ist undefiniert: SLBEXP) und (Fehler in KERNEL :: UNBOUND-SYMBOL-ERROR-HANDLER: die Variable SLBEXP ist nicht gebunden.) So. Was mache ich falsch? UND würde es eine bessere (oder mehr LISP-ish-Weise) geben, diese Funktion zu schreiben?
ETA
Corrected Code:
(defun esexp (base x)
(if (= x 0)
1
(if (< x 0)
(/ (esexp base (+ x 1)) base)
(* (esexp base (- x 1)) base))))
Ah duh. Vielen Dank. – Asker