相关疑难解决方法(0)

在lambda函数中递归

我有以下两个功能,我希望合并为一个:

(defun fib (n)
  (if (= n 0) 0 (fib-r n 0 1)))

(defun fib-r (n a b)
  (if (= n 1) b (fib-r (- n 1) b (+ a b))))
Run Code Online (Sandbox Code Playgroud)

我想只有一个函数,所以我试过这样的事情:

(defun fib (n)
  (let ((f0 (lambda (n) (if (= n 0) 0 (funcall f1 n 0 1))))
        (f1 (lambda (a b n) (if (= n 1) b (funcall f1 (- n 1) b (+ a b))))))
    (funcall f0 n)))
Run Code Online (Sandbox Code Playgroud)

但这不起作用.确切的错误是*** - IF: variable F1 has no value …

lisp recursion lambda common-lisp

16
推荐指数
2
解决办法
4696
查看次数

标签 统计

common-lisp ×1

lambda ×1

lisp ×1

recursion ×1