Exercise 1.10 Ackerman's function

题目

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))))))

What are the values of the following expressions?
(A 1 10)
(A 2 4)
(A 3 3)
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))
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*n.

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

根据题意可知:

  A(N, 0)=0

  A(0,N)=2*N

  A(N, 1)=2

  A(X,Y)=A(X-1, A(X, Y-1))

所以:

1. F(N)=A(0,N)=2*N

2. G(N)=A(1,N)

    =A(0, A(1, N-1)

    =2*A(1, N-1)

    =2*G(N-1)

 而G(0)=A(1,0)=0, G(1)=A(1,1)=2

  所以 G(N)=2^N 当N>=1时

3. H(N)=A(2,N)

    =A(1, A(2, N-1))

    =2^(A(2,N-1))
    =2^H(N-1)

  A(2,0)=1

  A(2,1)=2

  所以 H(N)=2^H(N-1) 当N>=1时

posted on 2014-09-15 16:28  一生只想往前飞  阅读(235)  评论(0编辑  收藏  举报

导航