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问题.
你之前缺少一个左括号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)