// D test program ack.d CSE413 6/99 // Ackerman's function grows tremendously fast as its arguments // become gradually larger. The definition is // A(1,j) = 2 ^ j for j >= 1 // A(i,1) = A(i-1,2) for i >=2 // A(i,j) = A(i-1,A(i,j-1)) i,j >= 2 // = 2^n int powerOf2(n) { int acc ; int k ; acc = 1; k = 1; while(!k > n) { acc = acc * 2; k = k + 1; } return(acc); } // = ackerman function of x & y [A(x,y)] int acker(x, y) { if (x==1) return (powerOf2(y)); else if (y==1) return acker(x-1,2); else return acker(x-1,acker(x,y-1)); } int main() { int a,b,out; a = get(); b=get(); out = acker(a,b); out = put(out); return 1; }