1

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

(let ((exp lambda (x y) (if (= y 1) x (* (exp x (- y 1)) x)))))

错误:

let: bad syntax in: (let ((exp lambda (x y) (if (= y 1) x (* (exp x (- y 1)) x)))))

我的函数应该定义递归求幂,但我遇到了 let 的问题。

4

1 回答 1

7

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

(letrec ((exp (lambda (x y)
                (if (= y 1) x
                    (* (exp x (- y 1)) x)))))
  exp)
于 2012-09-20T03:27:09.327 回答