我想在用Lisp编写的递归函数中实现基本条件,但由于Lisp中没有return语句,我无法做到这一点.
我的Lisp代码基于这个C代码
if (n==0) return;
Run Code Online (Sandbox Code Playgroud)
我如何在Lisp中实现它?
Common Lisp具有特殊形式RETURN-FROM(及其相对RETURN)来做你想要的.
(defun accumulate-list (list)
(when (null list)
(return-from accumulate-list 0))
(+ (first list)
(accumulate-list (rest list))))
Run Code Online (Sandbox Code Playgroud)
话虽如此,我更喜欢在编写递归函数时使用COND.
(defun accumulate-list (list)
(cond
((null list)
0)
(t
(+ (first list)
(accumulate-list (rest list))))))
Run Code Online (Sandbox Code Playgroud)