(define (fib x)
(if (< x 2)
x
(+ (fib (-1+ x))
(fib (- x 2)))))
(define (fib2 x)
(define (fib-call i fibonacci-of-i-before fibonacci-of-i x-to-reach)
(cond ((>= i x-to-reach)
fibonacci-of-i)
((< i x-to-reach)
(fib-call (1+ i)
fibonacci-of-i
(+ fibonacci-of-i-before fibonacci-of-i)
x-to-reach))))
(cond ((< x 2)
x)
(#t (fib-call 1 0 1 x))))
(if (< x 2)
x
(+ (fib (-1+ x))
(fib (- x 2)))))
(define (fib2 x)
(define (fib-call i fibonacci-of-i-before fibonacci-of-i x-to-reach)
(cond ((>= i x-to-reach)
fibonacci-of-i)
((< i x-to-reach)
(fib-call (1+ i)
fibonacci-of-i
(+ fibonacci-of-i-before fibonacci-of-i)
x-to-reach))))
(cond ((< x 2)
x)
(#t (fib-call 1 0 1 x))))