小编Ask*_*ker的帖子

简单的LISP功能无法正常工作

我今天决定学习LISP,并且一直在玩它.我写了一个简单的婴儿功能只是为了测试我的理解,现在明白我的理解并不像我理解的那样理解.:d

无论如何,这是功能.这个想法是,当它被调用时,例如(esexp base x)它应该返回值base ^ x.所以(esexp 3 4)= 3 ^ 4 = 81.

(如果重要的话,我正在使用Common Lisp的CMU实现.)

(defun esexp (base x)
  (if (= x 0)
      1
      (if (< x 0)
          (/ esexp (base (+ x 1)) base)
          (* esexp (base (+ x 1)) base))))
Run Code Online (Sandbox Code Playgroud)

这不起作用.我得到的错误看起来像(警告:此变量未定义:SLBEXP)和(KERNEL :: UNBOUND-SYMBOL-ERROR-HANDLER中的错误:变量SLBEXP未绑定.)所以.我究竟做错了什么?并且会有更好的(或更多LISP-ish方式)来编写这个函数吗?

ETA

更正代码:

(defun esexp (base x)
  (if (= x 0)
      1
      (if (< x 0)
          (/ (esexp base (+ x 1)) base) 
          (* (esexp base (- x 1)) base))))
Run Code Online (Sandbox Code Playgroud)

lisp common-lisp

6
推荐指数
2
解决办法
526
查看次数

标签 统计

common-lisp ×1

lisp ×1