Skip to content

fibonacci_tree

; Fibonacci series using tree recursion
(define (fib n)
    (cond ((= n 0) 0)
          ((= n 1) 1)
          (else (+ (fib (- n 1))
                   (fib (- n 2))))
    )
)

(fib 6)
(fib 5)
(fib 4)

; Fibonacci series using iterative process
(define (fib n)
    (define (fib-iter a b count)
        (if (= count 0)
            b
            (fib-iter (+ a b) a (- count 1))
        )
    )
    (fib-iter 1 0 n)
)
(fib 6)
(fib 5)
(fib 4)
; (fib 6)
;  => (fib-iter 1 0 6)
;  => (fib-iter 1 1 5)
;  => (fib-iter 2 1 4)
;  => (fib-iter 3 2 3)
;  => (fib-iter 5 3 2)
;  => (fib-iter 8 5 1)
;  => (fib-iter 13 8 0)
;  => 8