1 day ago
my attempt to do the exercises in sicp.
Saturday, July 5, 2008
sicp exercise 1.11
; Exercise 1.11. A function f is defined by the rule that
; f(n) = n if n<3 and
; f(n) = f(n - 1) + 2f(n - 2) + 3f(n - 3) if n> 3.
; Write a procedure that computes f by means of a recursive process.
; Write a procedure that computes f by means of an iterative process.
(begin
(define f_recur (lambda (n)
(if (< n 3)
n
(+ (f_recur (- n 1))
(* 2 (f_recur (- n 2)))
(* 3 (f_recur (- n 3))) ))))
(define f_iter_impl (lambda (a b c count)
(if (= count 0) a
(f_iter_impl (+ a (* 2 b) (* 3 c) ) a b (- count 1)))))
(define f_iter (lambda (n)
(f_iter_impl 2 1 0 (- n 2))))
(display (f_iter 4)) (newline)
(display (f_recur 4)) (newline)
(display (f_iter 5)) (newline)
(display (f_recur 5)) (newline)
(display (f_iter 23)) (newline)
(display (f_recur 23)) (newline)
(display (f_iter 100)) (newline)
(display (f_recur 100)) (newline)
)
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment