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