;; Caltech CS1 Fall 2007
;; Scheme code used in Lecture 4 (10/10/07)
;; mvanier@cs.caltech.edu

;; linear recursive process (from day 3)
(define (sum-integers n)
    (if (= n 0) 
        0
        (+ n (sum-integers (- n 1)))))

;; linear iterative process that solves the same problem
(define (sum-int n) (sum-iter 0 n 0))
(define (sum-iter current max sum)
            (if (> current max) 
                sum
                (sum-iter (+ 1 current)
                          max
                          (+ current sum))))

;; tree recursive Fibonacci number function
(define (fib n)
  (if (< n 2) 
      n 
      (+ (fib (- n 1)) 
         (fib (- n 2)))))

;; linear iterative Fibonacci number function
(define (ifib n) (fib-iter 1 0 n))
(define (fib-iter fnext f cnt)
   (if (= cnt 0)
       f
       (fib-iter (+ fnext f) fnext (- cnt 1))))

