File tree 3 files changed +82
-0
lines changed
3 files changed +82
-0
lines changed Original file line number Diff line number Diff line change
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
+ |#
Original file line number Diff line number Diff line change
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 ))))
Original file line number Diff line number Diff line change
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
+ |#
You can’t perform that action at this time.
0 commit comments