Blob


1 (define (f n)
2 (if (< n 3)
3 n
4 (+ (f (- n 1))
5 (* 2 (f (- n 2)))
6 (* 3 (f (- n 3))))))
8 (load-option 'format)
9 ;; (load-option 'unquote)
10 ;; (define (test-case t1 t2)
11 ;; (format #t "~A: ~A Expected: ~A" `t1, t1, t2))
12 (define (test-case actual expected)
13 (format #t "Actual: ~A Expected: ~A" actual expected))
14 (test-case (f 0) 0)
15 (test-case (f 1) 1)
16 (test-case (f 2) 2)
17 (test-case (f 3) 4)
18 (test-case (f 4) 11)
20 (define (f2 n)
21 (f-iter 2 1 0 n))
23 (define (f-iter n1 n2 n3 i)
24 (if (= i 0)
25 n3
26 (f-iter (+ n1 (* 2 n2) (* 3 n3))
27 n1
28 n2
29 (- i 1))))
32 (test-case (f2 0) 0)
33 (test-case (f2 1) 1)
34 (test-case (f2 2) 2)
35 (test-case (f2 3) 4)
36 (test-case (f2 4) 11)