(define (flist n) (cond ((< n 2) (list 1 1)) (else (let ((res-list (flist (- n 1)))) (cons (+ (car res-list) (car (cdr res-list))) res-list)))))
(define (fib n) (car (flist n)))
(define (fibonacci-list n) (if (< n 2) (list 1 1) (let ((so-far (fibonacci-list (- n 1)))) (cons (+ (car so-far) (car (cdr so-far))) so-far)))) (define (fibonacci n) (car fibonacci-list n))
(define (fib n ) (car(fib-list n)))
(define (fib-list n) (if (< n 2) (list 1 1) (let ((so-far (fib-list(- n 1)))) (cons (+(car so-far) (car (cdr so-far))) so-far))))
(define (fib-aux n) (if (< n 2) (list 1 1) (let ((so-far (fib-aux (- n 1)))) (cons (+ (car so-far) (car (cdr so-far))) so-far)))) (define (fib n) (car fib-aux n))
(if (< n 2) (list 1 1) (let ((so-far (fib-list (- n 1)))) (cons (+ (car so-far) (car (cdr so-far))) so-far)))(define (fib n) (car fib-list n)))