に私は一つに結合したい、次の2つの機能があります。再帰は、ラムダ関数
(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))))
を私はただ一つの機能を持っていると思いますので、私はこのような何か試してみました:
(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)))
を
しかし、これは機能しません。正確なエラーは*** - IF: variable F1 has no value
です。私はLISPの初心者ですから、次の質問にはっきりと答えていただきたいと思います:どのようにlispで再帰ラムダ関数を書くのですか?
ありがとうございました。
ありがとうございました。 –
http://stackoverflow.com/suggested-edits/113745 – thirtydot