1.10
; The following procedure computes a mathematical
; function called "Ackermann’s function"
(define (A x y)
(cond ((= y 0) 0)
((= x 0) (* 2 y))
((= y 1) 2)
(else (A (- x 1) (A x (- y 1))))))
; Q1) What are the values of the following expressions?
(A 1 10)
(A 2 4)
(A 3 3)
; A1)
; (A 1 10)
; => (A 0 (A 1 9))
; => (A 0 (A 0 (A 1 8)))
; => ...
; => 1024
; (A 2 4)
; => 65536
; (A 3 3)
; => 65536
;
; Consider the following procedures, where A
; is the procedure defined above:
(define (f n) (A 0 n))
(define (g n) (A 1 n))
(define (h n) (A 2 n))
(define (k n) (* 5 n n))
; Q2) Give concise mathematical definitions for the
; functions computed by the procedures f, g, and h
; for positive integer values of n.
; For example, (k n) computes 5n^2
;
; A2)
; f(n) -> A(0, n)
; -> x=0 -> 2y -> 2n
; => f(n) = 2n
; g(n) -> A(1, n)
; -> A(0, A(1, n-1))
; -> 2 * A(1, n-1)
; -> 2 * A(0, A(1, n-2))
; -> 2 * 2 * A(0, A(1, n-3))
; -> 2 * 2 * 2 ... * 2 (n times)
; => g(n) = 2^n
;
; h(n) -> A(2, n)
; -> A(1, A(2, n-1))
; -> 2 ^ A(2, n -1)
; -> 2 ^ ( A(1, A(2, n - 2)) )
; -> 2 ^ 2 ^ A(2, n - 2)
; => h(n) = 2 ^ 2 ^ 2 .... ^ 2 (n times)