尝试运行代码时,我一直收到此错误:
(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)))))
我的函数应该定义递归取幂,但是我遇到了问题。
答案 0 :(得分:7)
您在lambda
之前缺少左括号,而let
表单缺少正文。此外,您不能使用let
来定义递归函数;你需要使用letrec
(对于Scheme)或labels
(对于Common Lisp)。也许你的意思是这个(方案):
(letrec ((exp (lambda (x y)
(if (= y 1) x
(* (exp x (- y 1)) x)))))
exp)