Tôi có 2 chức năng sau mà tôi muốn kết hợp thành một:recursing trong một hàm 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))))
Tôi muốn chỉ có một chức năng, vì vậy tôi cố gắng một cái gì đó như thế này:
(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)))
tuy nhiên điều này không hoạt động. Lỗi chính xác là *** - IF: variable F1 has no value
Tôi là một người mới bắt đầu theo như LISP đi, vì vậy tôi đánh giá cao một câu trả lời rõ ràng cho câu hỏi sau: làm thế nào để bạn viết một hàm lambda đệ quy trong lisp?
Cảm ơn.
Cảm ơn, điều đó đã hiệu quả. –
http://stackoverflow.com/suggested-edits/113745 – thirtydot