language: Common Lisp (clisp) (clisp 2.47)
date: 119 days 15 hours ago
link:
visibility: public
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
;; 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 ()
  (let ((a (read)))
    (princ (f a))))
 
;; Run main function
(main)