import java.util.Date; public class Tak { public static void main(String[] args) { boolean useFloat = false; int numpasses; for (int i = 0; i < args.length; i++) { if (args[i].startsWith("-f")) useFloat = true; } try { numpasses = Integer.parseInt(args[args.length-1]); } catch (Exception e) { numpasses = 1000; } Date d1 = new Date(); for (int i = 0; i < numpasses; i++) { Tak(18.0f, 12.0f, 6.0f); } Date d2 = new Date(); long TimeRequired = d2.getTime() - d1.getTime(); double numseconds = TimeRequired/1000.0; System.out.println("Completed " + numpasses + " passes in " + numseconds + " seconds" ); System.out.println(numpasses/numseconds + " calls per second"); } public static int Tak (int x, int y, int z) { if (y >= x) return z; else return Tak(Tak(x-1, y, z), Tak(y-1, z, x), Tak(z-1, x, y)); } public static float Tak (float x, float y, float z) { if (y >= x) return z; else return Tak(Tak(x-1.0f, y, z), Tak(y-1.0f, z, x), Tak(z-1.0f, x, y)); } }