Skip to content

Commit 407b711

Browse files
committed
1.9 to 1.11
1 parent 4109508 commit 407b711

File tree

3 files changed

+82
-0
lines changed

3 files changed

+82
-0
lines changed

kenric/ex.1.10.rkt

+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
#lang racket
2+
3+
(define (A x y)
4+
(cond ((= y 0) 0)
5+
((= x 0) (* 2 y))
6+
((= y 1) 2)
7+
(else (A (- x 1) (A x (- y 1))))))
8+
9+
; (A 1 10) 1024
10+
; (A 2 4) 65536
11+
; (A 3 3) 65536
12+
13+
(A 2 n)
14+
(A 1 (A 2 (- n 1)))
15+
(A 1 (A 1 (A 2 (- (- n 1) 1))))
16+
(A 0 (A 1 (A 2 (- n 2)) (A 1 (A 2 (- n 2)))))
17+
18+
#|
19+
| 0 if n = 0
20+
(define (f n) (A 0 n)) = | 2 if n = 1
21+
| 2n if n > 1
22+
23+
| 0 if n = 0
24+
(define (g n) (A 1 n)) = | 2^n if n > 0
25+
26+
| 0 if n = 0
27+
(define (h n) (A 2 n)) = | 2 if n = 1
28+
| Knuth's up arrow notation if n > 1
29+
|#

kenric/ex.1.11.rkt

+20
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
#lang racket
2+
3+
;; recursive
4+
(define (f n)
5+
(if (< n 3)
6+
n
7+
(+ (f (- n 1))
8+
(* 2 (f (- n 2)))
9+
(* 3 (f (- n 3))))))
10+
11+
;; iterative
12+
(define (fn n)
13+
(if (< n 3)
14+
n
15+
(helper 2 1 0 n)))
16+
17+
(define (helper a b c n)
18+
(if (< n 3)
19+
a
20+
(helper (+ a (* 2 b) (* 3 c)) a b (- n 1))))

kenric/ex.1.9.rkt

+33
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
#lang racket
2+
3+
; (+ 4 5)
4+
5+
(define (+ a b)
6+
(if (= a 0) b (inc (+ (dec a) b))))
7+
8+
#|
9+
(+ 4 5)
10+
(if (= 4 0) 5 (inc (+ (dec 4) 5)))
11+
(inc (+ 3 5))
12+
(inc (inc (+ 2 5)))
13+
(inc (inc (inc (+ 1 5))))
14+
(inc (inc (inc (inc (+ 0 5)))))
15+
(inc (inc (inc (inc 5))))
16+
(inc (inc (inc 6)))
17+
(inc (inc 7))
18+
(inc 8)
19+
9
20+
|#
21+
22+
(define (+ a b)
23+
(if (= a 0) b (+ (dec a) (inc b))))
24+
25+
#|
26+
(+ 4 5)
27+
(if (= 4 0) 5 (+ (dec 4) (inc 5)))
28+
(+ 3 6)
29+
(+ 2 7)
30+
(+ 1 8)
31+
(+ 0 9)
32+
9
33+
|#

0 commit comments

Comments
 (0)