-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path1-10.scm
68 lines (58 loc) · 1.06 KB
/
1-10.scm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#lang sicp
; remember applicative order (args first)
(define (A x y)
(cond ((= y 0) 0)
((= x 0) (* 2 y))
((= y 1) 2)
(else (A (- x 1) (A x (- y 1))))))
(A 1 10)
;1024
; (A 0 (A 1 9))
; (A 0 (A 0 (A 1 8)))
; ...
; 2^10 = 1024
; short version
; (A 1 3)
; (A 0 (A 1 2))
; (A 0 (A 0 (A 1 1)))
; (A 0 (A 0 2))
; (A 0 (* 2 2))
; (A 0 4)
; (* 2 4)
; 8
(A 2 4)
;65536
; (A 1 (A 2 3))
; (A 1 (A 1 (A 2 2)))
; (A 1 (A 1 (A 1 (A 2 1))))
; (A 1 (A 1 (A 1 2)))
; (A 1 (A 1 (A 0 (A 1 1))))
; (A 1 (A 1 (A 0 2)))
; (A 1 (A 1 (* 2 2)))
; (A 1 (A 1 4))
; (A 1 (A 0 (A 1 3)))
; (A 1 (A 0 (A 0 (A 1 2))))
; (A 1 (A 0 (A 0 (A 0 (A 1 1)))))
; (A 1 (A 0 (A 0 (A 0 2))))
; (A 1 (A 0 (A 0 4))))
; (A 1 (A 0 8)))
; (A 1 16)
; ... 2**16 = 65536
(A 3 3)
;65536
; (A 3 (A 3 2))
; (A 2 (A 2 (A 3 1)))
; (A 2 (A 2 2))
; (A 2 (A 1 (A 2 1)))
; (A 2 (A 1 2))
; (A 2 (A 1 (A 1 (A 1 1))))
; (A 2 (A 1 (A 1 2)))
; (A 2 (A 1 (A 0 (A 1 1))))
; (A 2 (A 1 (A 0 2)))
; (A 2 (A 1 4))
; (A 2 16)
; (A 1 (A 2 15))
; (A 1 (A 1 ... (A 2 1...)
; f(n) = 2n
; g(n) = 2^n
; h(n) = 2^(2^...)(n times)