使用LISP中的错误语法

ran*_*ose 1 lisp recursion let

尝试运行代码时,我不断收到此错误:

(let ((exp lambda (x y) (if (= y 1) x (* (exp x (- y 1)) x)))))
Run Code Online (Sandbox Code Playgroud)

错误:

let: bad syntax in: (let ((exp lambda (x y) (if (= y 1) x (* (exp x (- y 1)) x)))))
Run Code Online (Sandbox Code Playgroud)

我的函数应该定义递归取幂,但我遇到let问题.

Chr*_*ung 7

你之前缺少一个左括号lambda,let表格缺少一个正文.此外,您不能let用于定义递归函数; 你需要使用letrec(对于Scheme)或labels(对于Common Lisp).也许你的意思是这个(Scheme):

(letrec ((exp (lambda (x y)
                (if (= y 1) x
                    (* (exp x (- y 1)) x)))))
  exp)
Run Code Online (Sandbox Code Playgroud)