Saturday, October 5, 2013

Ackermann Function

The Ackermann function is the simplest example of a well-defined total function which is computable but not primitive recursive. The Ackermann function is one of the fastest growing functions, much faster than polynomials or exponentials.

Its definition is:
1. If x = 0 then A(x, y) = y + 1
2. If y = 0 then A(x, y) = A(x-1, 1)
3. Otherwise, A(x, y) = A(x-1, A(x, y-1))

You have to write a program to read two integers x and y, and print the value of A(x, y).

Warning: Do not try values larger than x=5 and y=5.

Sample Input and Output:

Input:
00
Output:
1
Input:
21
Output:
5
Input:
32
Output:
29

Solution:

#include <stdio.h>

int arkman(int x, int y)
{
    if(x==0)
    return(y+1);
    else if(y==0)
    return(arkman(x-1,1));
    else
    return(arkman(x-1, arkman(x,y-1)));
}

void main()
{
    int i,j;
    scanf("%d %d",&i,&j);
    printf("%d\n",arkman(i,j));
}

No comments:

Post a Comment