Fibonacci

You might also like

You are on page 1of 2

(define fac (lambda (n) (if (= n 0) 1 (* n (fac (- n 1)))))) % % (define fib (lambda (n) (if (= n 0) 0 (if (= n 1) 1 (+ (fib (- n 1))

(fib (- n 2))))))) ;; A procedure for ;; See SICP, p. 37 (define fib (lambda (n) (cond ((= n 0) ((= n 1) (else (+ counting the n:th Fibonacci number

0) 1) (fib (- n 1)) (fib (- n 2)))))))

;; The same procedure written without using lambda (define (fib n) (cond ((= n 0) 0) ((= n 1) 1) (else (+ (fib (- n 1)) (fib (- n 2))))))

;; The recursive version (define fact (lambda (n) (if (= n 0) 1 (* n (fact (- n 1)))))) ;; The iterative version used in SICP p.33 (define (factorial n) (define (iter product counter) (if (> counter n) product (iter (* counter product)

(+ counter 1)))) (iter 1 1)) ;; The iterative version using letrec, equivalent to the one in SICP (define factorial (lambda (n) (letrec ((iter (lambda (product counter) (if (> counter n) product (iter (* counter product) (+ counter 1)))))) (iter 1 1)))

=========

You might also like