【发布时间】:2014-12-09 21:12:53
【问题描述】:
我正在尝试声明一个局部变量以在递归函数中使用,但每次函数递归时似乎都会调用我的 let 。我希望调用一次 let 函数来声明一个变量并将其赋值为 nil,然后我想在我的递归函数中更新这个局部变量的值,而不是在每次递归时擦除它。
这是我的代码的简化框架。
(defun recursive-function (l1 l2)
(let ((?x nil))
(cond (...
...
... ;trying to update value of ?x here with (setf ?x 5)
(recursive-funtion (rest l1)(restl2)) ;recursive call made
))))
【问题讨论】:
-
如果您有其他编程语言(例如 C)的经验,考虑类比
void foo() { int x = 1; x++; printf("%d",x); foo(); }可能会有所帮助。您希望每次都能看到2打印出来。 (除非您将x声明为static,但 Common Lisp 没有这种意义上的静态变量。)
标签: recursion lisp common-lisp let