1 /* TAK -- A vanilla version of the TAKeuchi function. */
2
3 #include <stdio.h>
4
tak(x,y,z)5 static int tak (x, y, z)
6 int x, y, z;
7 {
8 if (y >= x)
9 return z;
10 else
11 return tak (tak (x-1, y, z),
12 tak (y-1, z, x),
13 tak (z-1, x, y));
14 }
15
main(argc,argv)16 int main (argc, argv)
17 int argc;
18 char *argv[];
19 {
20 int i;
21 int result;
22 int x = 18, y = 12, z = 6;
23
24 if (argc > 1)
25 x = atoi (argv[1]);
26
27 if (argc > 2)
28 y = atoi (argv[2]);
29
30 if (argc > 3)
31 z = atoi (argv[3]);
32
33 for (i=0; i<2000; i++)
34 result = tak (x, y, z);
35
36 if (result != 7)
37 printf ("*** wrong result ***\n");
38
39 return 0;
40 }
41