aboutsummaryrefslogtreecommitdiffstats
path: root/test/ackermann.c
blob: 5e1bd4894414ea50ebc67a127a0aed8d6fc8fddf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
/* -*- mode: c -*-
 * $Id$
 * http://www.bagley.org/~doug/shootout/
 */

int printf(const char *, int, int);
int atoi(const char *);

int 
Ack(int M, int N) {
    if (M == 0) return( N + 1 );
    if (N == 0) return( Ack(M - 1, 1) );
    return( Ack(M - 1, Ack(M, (N - 1))) );
}

int
main(int argc, char *argv[]) {
    int n = ((argc == 2) ? atoi(argv[1]) : 5);

    printf("Ack(3,%d): %d\n", n, Ack(3, n));
    return(0);
}