I'm using Racket (derivative of Scheme/Lisp), and I wrote this Fibonacci Algorithm which uses Accumulators:
(define (fibonacci* n)
  (local (; NaturalNumber NaturalNumber NaturalNumber -> NaturalNumber
          ; Add accumulators for current and previous fibonacci numbers
          (define (fibonacci-acc x current previous)
            (if (= x n) current
                (fibonacci-acc (add1 x) (+ current previous) current))))
    (fibonacci-acc 0 0 1)))
This is a BIG improvement over a function that doesn't use accumulators, like the following:
(define (fibonacci n)
  (if (<= n 1) n
      (+ (fibonacci (- n 1))
         (fibonacci (- n 2)))))
But how can I set up recurrence equations to calculate how much more efficient it is?
 
     
     
    