Professional Documents
Culture Documents
Fibonacci
Fibonacci
Fibonacci
(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
;; 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)))
=========