language: Common Lisp (clisp) (clisp 2.47)
date: 119 days 8 hours ago
link:
visibility: public
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
;; This function takes a non-negative integer and returns an integer.
(defun f (x)
  (cond ((atom x) (f (list x 1 0)))
        (t
          (let ((n (car x)) (a (cadr x)) (b (caddr x)))
            (cond ((<= n 0) b)
                  (t (f (list (- n 1) b (+ a b)))))))))
 
;; User interface
(defun main ()
  (princ "Enter a non-negative integer: ")
  (let ((a (read)))
    (princ (f a))))
 
;; Run main function
(main)