Skip to content

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)