tengo los siguientes 2 funciones que desea combinar en una sola:manera recursiva en una función 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))))
me gustaría tener sólo una función, por lo que intentó hacer algo como esto:
(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)))
sin embargo, esto no está funcionando. El error exacto es *** - IF: variable F1 has no value
Soy un principiante en lo que respecta a LISP, por lo que agradecería una respuesta clara a la siguiente pregunta: ¿cómo se escribe una función lambda recursiva en lisp?
Gracias.
Gracias, eso funcionó. –
http://stackoverflow.com/suggested-edits/113745 – thirtydot